Как удалить дубликат элемента в SQLite при использовании ListView - PullRequest
0 голосов
/ 26 апреля 2020

При получении данных из SQLite с использованием ListView у меня повторяются элементы, я заполняю два TextView данными из двух разных столбцов в двух разных таблицах. Когда я использую отдельные данные из каждого столбца и таблицы, они работают как запланировано, но вместе появляются дублированные элементы.

из базы данных. java

public Cursor getQuestionAndAnswer(){
        SQLiteDatabase sqLiteDatabase = this.getReadableDatabase();
        return sqLiteDatabase.rawQuery("select * from Question_Table, Answer_Table" ,null);
    }

из адаптера курсора

public class QuestionAndAnswerAdapter extends CursorAdapter {
    public QuestionAndAnswerAdapter(Context context, Cursor c) {
        super(context, c, 0);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        return LayoutInflater.from(context).inflate(R.layout.q_a_layout,parent,false);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        TextView Question = view.findViewById(R.id.text_question);
        String listQuestion = cursor.getString(cursor.getColumnIndexOrThrow("QUESTIONS"));
        Question.setText(listQuestion);

        TextView Answer = view.findViewById(R.id.text_answer);
        String listAnswer = cursor.getString(cursor.getColumnIndexOrThrow("ANSWERS"));
        Answer.setText(listAnswer);
    }
}

При привязке адаптера к ListView

        questionCursor = myDataBaseClass.getQuestionAndAnswer();


if (questionCursor != null) {
            QuestionAndAnswerAdapter questionAndAnswerAdapter = new QuestionAndAnswerAdapter(this, questionCursor);
            QuestionList.setAdapter(questionAndAnswerAdapter);
        }


[![The first text is duplicated, while the second text displays correctly][1]][1]

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

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

 // give me ALL columns, from both tables
select * from Question_Table, Answer_Table

Где, на мой взгляд, он похож на вас Пытаемся подобрать ответы на вопрос.

// give me all columns from this table matched up with this ID from that table.
SELECT * FROM question_table JOIN answer_table ON question_table.id = answer_table.questionID

Для быстрого ознакомления с SQL Хан Акадами имеет отличный интерактивный путь обучения:

https://www.khanacademy.org/computer-programming/sql-join-on-tables/5409956539006976

0 голосов
/ 26 апреля 2020

Я предлагаю вам использовать ID для записей базы данных и получить его unique в зависимости от идентификатора, но помните, что вы не можете добавлять одни и те же данные несколько раз, в этом случае вы можете сравнить данные, если они существуют в DB тогда не добавляет, добавьте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...