从Firebase填充的listview在列表项之间显示空白行

问题描述

我正在尝试使用Firebase列表适配器和Firebase列表选项填充Firebase实时数据库中的数据。我仅希望将满足特定条件的Firebase中的特定数据放在我的自定义列表视图中(在这种情况下,日期之间的差异小于31)。但是,下面的代码在我的列表视图中给了我空白行,如附件图像所示,请帮助我为什么要这样做以及如何停止看到空白行。

output_image

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 (将#修改为@)