Обновление пользовательского списка в Android с помощью DataSetObserver - PullRequest
1 голос
/ 18 октября 2019

Я использую пользовательский адаптер для просмотра списка и создал класс для пользовательских данных.

В настоящее время я реализую ListAdapter в классе CustomAdapter.

Используя реализацию ListAdapter, я 'я не получаю notifyDataSetChanged для вызова при добавлении новых данных. Я расширил BaseAdapter и попытался использовать notifyDataSetChanged, он работает, но только когда я нажимаю на другой элемент управления в действии, данные загружаются.


        date = new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                                  int dayOfMonth) {
                // TODO Auto-generated method stub
                myCalendar.set(Calendar.YEAR, year);
                myCalendar.set(Calendar.MONTH, monthOfYear);
                myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);


                if(isFrom){
                    from=sdf.format(myCalendar.getTime());
                    fY.setText(from);
                }else{
                    to=sdf.format(myCalendar.getTime());
                    tY.setText(to);
                }
                getTransactions();
            }

        };

getTransactions ();будет вызываться, когда дата выбрана в поле из поля . Но только когда я щелкаю по полю, данные появляются в ListView.

    private void getTransactions() {
        Cursor c=billnDB.getBill();
        billData.clear();
        TransactionBillData data=new TransactionBillData();
        data.setBill_number("ID");
        data.setBill_number("Bill Number");
        data.setDate("Date");
        data.setTotal("Total");
        billData.add(data);
        if(c.moveToFirst()){
            Log.v("Products Moved to First", "True");
            do{
                Log.v("Bill Number",c.getString(c.getColumnIndex("number")));

                data=new TransactionBillData();
                data.setBill_number(c.getString(c.getColumnIndex("number")));
                data.setDate(c.getString(c.getColumnIndex("date")));
                data.setTotal(c.getString(c.getColumnIndex("total")));
                billData.add(data);
                adapter.notifyDataSetChanged();
                addLayout(c.getInt(c.getColumnIndex("id")),
                        c.getString(c.getColumnIndex("number")),
                        c.getString(c.getColumnIndex("date")),
                        c.getString(c.getColumnIndex("total")));
            }while (c.moveToNext());

        }
    }

Это мой адаптер

public class TransactionsBillAdapter extends BaseAdapter implements ListAdapter {
...
}

Мне нужен другой параметр вместо этого notifyDataSetChanged ();

...