Как вставить несколько массивов в RecycleView - PullRequest
0 голосов
/ 23 марта 2020

У меня есть 3 массива

ArrayList<String> jawabansiswa;
ArrayList<String> jawabanbenar;
ArrayList<String> txtsoal;

Я хочу показать все это в Recycler View

В моем коде я использовал это для адаптера, и logcat показывает исключение

    public arrayadapter(Context c, ArrayList<String> jawabansiswa, ArrayList<String> jawabanbenar, ArrayList<String> txtsoal) {
        this.c = c;
        this.jawabansiswa = jawabansiswa;
        this.jawabanbenar = jawabanbenar;
        this.txtsoal = txtsoal;
    }
    @Override
    public void onBindViewHolder(@NonNull arrayadapter.ViewHolder holder, int position) {
        holder.jawabansiswa.setText(jawabansiswa.get(position));
        holder.jawabanbenarx.setText(jawabanbenar.get(position));
        holder.txtsoalx.setText(txtsoal.get(position));
    }

Это мое исключение logcat

 Process: com.sariazhariyah.eassessmentinteraktif, PID: 28187
    java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
        at java.util.ArrayList.get(ArrayList.java:437)
        at com.sariazhariyah.eassessmentinteraktif.arrayadapter.onBindViewHolder(arrayadapter.java:41)
        at com.sariazhariyah.eassessmentinteraktif.arrayadapter.onBindViewHolder(arrayadapter.java:15)

Могу ли я получить исходный код для отображения 3 Arraylists в одном Recyclerview, как это введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 23 марта 2020
if(position<=jawabansiswa.size()-1){
holder.jawabansiswa.setText(jawabansiswa.get(position));
}

if(position<=jawabanbenar.size()-1){
holder.jawabanbenarx.setText(jawabanbenar.get(position));
}

 if(position<=txtsoal.size()-1){
 holder.txtsoalx.setText(txtsoal.get(position));
}
0 голосов
/ 23 марта 2020

На самом деле кажется, что длина ваших массивов неодинакова, поэтому он генерирует исключение IndexOutOfBoundsException. Пожалуйста, убедитесь, что длина вашего массива равна. Одна вещь, которую вы можете сделать, чтобы обработать это исключение, это проверить длину списка отдельных массивов, прежде чем напрямую установить его в textView. Измените ваш код следующим образом: -

 holder.jawabansiswa.setText((jawabansiswa.size()-1)>position?"":jawabansiswa.get(position));
 holder.jawabanbenarx.setText((jawabanbenar.size()-1)>position?"":jawabanbenar.get(position));
 holder.txtsoalx.setText((txtsoal.size()-1)>position?"":txtsoal.get(position));

Я сделал то, что я проверил размер отдельного массива и применил, если еще в этом. Если индекс позиции представления переработчика не выходит из списка, тогда установите текст пустым

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