问题描述
我正在尝试使用Firebase列表适配器和Firebase列表选项填充Firebase实时数据库中的数据。我仅希望将满足特定条件的Firebase中的特定数据放在我的自定义列表视图中(在这种情况下,日期之间的差异小于31)。但是,下面的代码在我的列表视图中给了我空白行,如附件图像所示,请帮助我为什么要这样做以及如何停止看到空白行。
public class CurrentListview extends AppCompatActivity {
Firebaselistadapter currentadapter;
ListView mCurrent;
String companyname,branchname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_current_listview);
mCurrent = (ListView) findViewById(R.id.currentreceivableslistview);
SharedPreferences sp = getApplicationContext().getSharedPreferences("DEVICE_PREFS",Context.MODE_PRIVATE);
companyname = sp.getString("companynam","");
branchname = sp.getString("branchnam","");
Query query = FirebaseDatabase.getInstance().getReference("identity").child(FirebaseAuth.getInstance().getUid())
.child(companyname+ " debtors accounts").child(branchname);
query.keepSynced(true);
FirebaseListOptions<DebtorsAccountsInfo> currentlistoption = new FirebaseListOptions.Builder<DebtorsAccountsInfo>()
.setLayout(R.layout.current_listview_layout_template)
//.setLifecycleOwner(CurrentListview.this)---replaced with overides
.setQuery(query,DebtorsAccountsInfo.class)
.build();
currentadapter = new Firebaselistadapter(currentlistoption) {
@Override
protected void populateView(@NonNull View v,@NonNull Object model,int position) {
try{
Date date1,date2;
Calendar calendar = Calendar.getInstance();
String datetoday = DateFormat.getDateInstance().format(calendar.getTime());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
datetoday = simpleDateFormat.format(calendar.getTime());
//setting dates
date1 = simpleDateFormat.parse(datetoday);
DebtorsAccountsInfo currentdebtor = (DebtorsAccountsInfo) model;
String disbursementdate= currentdebtor.getdisbursementdate();
date2 = simpleDateFormat.parse(disbursementdate);
//Comparing dates
long difference = Math.abs(date2.getTime() - date1.getTime()) ;
long differenceinDates = difference/(24*60*60*1000);
if(differenceinDates<31 && differenceinDates>0){
try {
TextView mClientname= v.findViewById(R.id.current_client_name_lstvw_item);
//TextView mPaidamount = v.findViewById(R.id.paid_amount_lstvw_item);
//TextView mDuedate = v.findViewById(R.id.due_date_lstvw_item);
TextView mBalance = v.findViewById(R.id.current_balance_lstvw_item);
//TextView mdisbursementdate = v.findViewById(R.id.disbursement_date_lstvw_item);
mClientname.setText(currentdebtor.getName().toString());
mBalance.setText(currentdebtor.getAmountdue().toString());
}
catch (Exception e){}
}
}
catch (Exception e){
}
}
};
mCurrent.setAdapter(currentadapter);
}
@Override
protected void onStart(){
super.onStart();
currentadapter.startListening();
}
@Override
protected void onStop(){
super.onStop();
currentadapter.stopListening();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)