Настроить просмотр списка не может отображать все данные, студия android

Я думаю, как показать данные на странице настройки списка. Ребята, вы можете помочь мне выяснить, в чем ошибка?

вот задание

Model txn;
        public SQLiteHelper mSQLiteHelper;
        ListView mListView;
        ArrayList<Model> mList;
        RecordListAdapter mAdapter = null;

это инициализация

 mListView = findViewById(R.id.listView);
        mList = new ArrayList<>();
        mAdapter = new RecordListAdapter(this, R.layout.row, mList);
        mListView.setAdapter(mAdapter);
        mSQLiteHelper = new SQLiteHelper(this);
        mList = new ArrayList<>();

Это моя страница, на которой показаны все данные, я поставил отладчик на отладку. Он может получить все мои данные с 15 столбцами, но он не может отображаться на странице просмотра списка. есть ли ошибка в этом коде?

try {
            SQLiteDatabase db = mSQLiteHelper.getReadableDatabase();
            Cursor cursor = db.rawQuery("select * from Table1", null);
            mList.clear();
            while (cursor.moveToNext()) {
                txn = new Model();
                txn.setId(cursor.getInt(cursor.getColumnIndex("id")));
                txn.setName(cursor.getString(cursor.getColumnIndex("name")));
                txn.setAddress(cursor.getString(cursor.getColumnIndex("address")));
                txn.setPhone(cursor.getString(cursor.getColumnIndex("phone")));
                mList.add(new Model());
            }

            mAdapter.notifyDataSetChanged();
            if (mList.size() == 0) {
                Toast.makeText(this, "No record found...", Toast.LENGTH_SHORT).show();
            }

            mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view, int i, long l) {
                    return false;
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }

Это должно работать идеально, как ожидалось.

Khemraj Sharma 10.09.2018 10:50

я. Но это не работает. что-то не так, но не знаю где. @Khemraj

Leon Zaii 10.09.2018 11:05

mList.add (новая модель ()); Пожалуйста, проверьте размер списка, поскольку вы добавляете в него каждый раз новый объект, поэтому в списке нет данных для уведомления в адаптере.

Ankita-user3449434 10.09.2018 11:25

вам нужно изменить код из mList.add (new Model ()); в mList.add (txn); пожалуйста, проверьте мой ответ.

X-Byte Technolabs pvt. ltd. 10.09.2018 11:31

Ладно, ребята, проблема в том, что на mListView.setOnItemLongClickListener скачет. Ребят, знаете, в чем проблема?

Leon Zaii 10.09.2018 11:47
0
5
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, проверьте код ниже

mListView = findViewById(R.id.listView);

mSQLiteHelper = new SQLiteHelper(this);
mList = new ArrayList<>();

mAdapter = new RecordListAdapter(this, R.layout.row, mList);
mListView.setAdapter(mAdapter);

Код функции привязки данных

try {
        SQLiteDatabase db = mSQLiteHelper.getReadableDatabase();
        Cursor cursor = db.rawQuery("select * from Table1", null);
        mList.clear();
        while (cursor.moveToNext()) {
            txn = new Model();
            txn.setId(cursor.getInt(cursor.getColumnIndex("id")));
            txn.setName(cursor.getString(cursor.getColumnIndex("name")));
            txn.setAddress(cursor.getString(cursor.getColumnIndex("address")));
            txn.setPhone(cursor.getString(cursor.getColumnIndex("phone")));
            mList.add(txn);
        }

        mAdapter.notifyDataSetChanged();
        if (mList.size() == 0) {
            Toast.makeText(this, "No record found...", Toast.LENGTH_SHORT).show();
        }

        mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int i, long l) {
                return false;
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }

и у меня есть еще одно предложение: не добавляйте прослушиватель щелчков списка внутри вашей функции привязки данных.

да, понял, вам нужно также удалить mList = new ArrayList <> (); эта строка, которая добавляется после mSQLiteHelper = new SQLiteHelper (this);

X-Byte Technolabs pvt. ltd. 10.09.2018 11:41

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

X-Byte Technolabs pvt. ltd. 10.09.2018 11:42

Другие вопросы по теме