Как передать несколько значений массива в классе пользовательского адаптера для представления пользовательского списка?
У меня есть представление списка с иконкой изображения слева и тремя текстовыми представлениями справа в одной строке. Я создал макет, но при создании класса адаптера я столкнулся с некоторыми проблемами. Вот код:
import android.app.Activity;
import android.widget.ArrayAdapter;
public class CustomList extends ArrayAdapter<String>{
private final Activity context;
private final String[][] listRow;
private final Integer[] imageId;
public CustomList(Activity context, String[][] listRow, Integer[] imageId){
super(context, R.layout.rowlayout, listRow);
}
}
Сначала я создал три массива 1D для трех текстовых просмотров, но в конструкторе я не смог их передать.
Поэтому мне пришлось создать 2D-массив, где каждая строка в таблице будет представлять информацию об одном элементе представления списка.
Но я не могу этого сделать. Я получаю сообщение об ошибке:
Невозможно разрешить метод super(android.app.Activity, int, java.lang.String[][])
с 2D-массивами
Как решить эту проблему?
Ответы
Ответ 1
После длительного использования я нашел решение. Я создал отдельный класс для хранения значений данных для каждой отдельной строки и создал массив объектов того же самого.
Вот пример кода:
import android.app.Activity;
import android.widget.ArrayAdapter;
class ListItem
{
public String textview1;
public String textview2;
public String textview3;
public int imageId;
public ListItem(String t1, String t2, String t3, int imageId)
{
this.textview1 = t1;
this.textview2 = t2;
this.textview3 = t3;
this.imageId = imageId;
}
}
public class CustomList extends ArrayAdapter<Object>
{
private Activity context;
private ListItem listItem[];
public CustomList(Activity context, ListItem li[])
{
super(context, R.layout.rowlayout, li);
}
}
Ответ 2
Создайте класс модели (отдельно), который содержит все три поля, которые требуются. Затем создайте arraylist в своей деятельности и добавьте в него элементы. передайте этот arraylist адаптеру, в котором он работает.