2016-03-28 3 views
-1

В настоящее время у меня есть список по умолчанию, отображающий имена из Arraylist JavaClassName. Я хотел бы реализовать ImageView в ListView, так что я прочитал и попытался методы из этих 2-х звеньев:
Android Custom Listview with Image and Text using ArrayAdapter
Android Custom ListView with Images and Text – ExampleAndroid Customized ListView и ArrayList

Я проблема перехода от их String[] и Integer[] в своих CustomList классов в мои ArrayList, как изображение и имя хранятся в этом Arraylist. Мой ArrayList состоит из других данных, но мне нужно только получить данные для показа в настраиваемом ListView.

редактирует/Добавить на:

private final Activity context; 
private final String[] itemname; 
private final Integer[] imgid; 

public CustomListAdapter(Activity context, String[] itemname, Integer[] imgid) { 
    super(context, R.layout.mylist, itemname); 
    // TODO Auto-generated constructor stub 

    this.context=context; 
    this.itemname=itemname; 
    this.imgid=imgid; 
} 

public View getView(int position,View view,ViewGroup parent) { 
    LayoutInflater inflater=context.getLayoutInflater(); 
    View rowView=inflater.inflate(R.layout.mylist, null,true); 

    TextView txtTitle = (TextView) rowView.findViewById(R.id.item); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
    TextView extratxt = (TextView) rowView.findViewById(R.id.textView1); 

    txtTitle.setText(itemname[position]); 
    imageView.setImageResource(imgid[position]); 
    extratxt.setText("Description "+itemname[position]); 
    return rowView; 

}; 

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

final ArrayList<JavaClassName> arrayListName = new ArrayList<JavaClassName>(); 
arrayListName.add(new JavaClassName(R.drawable.icon1, "name", "info", "info", "info")); 
arrayListName.add(new JavaClassName(R.drawable.icon2, "name", "info", "info", "info")); 

final ArrayList<String> itemName = new ArrayList<String>(); 
    for(int i=0; i<arrayListName.size(); i++){ 
     String name = arrayListName.get(i).getName().toString(); 
     itemName.add(name); 
    }; 

CustomAdapter adapter = new CustomAdapter>(this, android.R.layout.simple_list_item_1, itemName); 
    listView.setAdapter(adapter); 

Как я могу соответствовать String [] и Integer [] из класса CustomAdapter в адаптер CustomAdapter = новый CustomAdapter> (это, android.R.layout.simple_list_item_1 , название предмета);?

+0

Не забудьте поделиться своим кодом и правильно объяснить, что происходит? – aribeiro

+0

'adapter = new ArrayAdapter (это, android.R.layout.simple_list_item_1, arrayListName);' это мой текущий адаптер.эти 2 ссылки используют этот адаптатор, который передает 2 массива: «CustomListAdapter adapter = new CustomListAdapter (this, itemname, imgid)»; Итак, как я могу внести изменения, чтобы получить изображение и имя из моего arraylist в customListAdapter, не делая еще 2 массивы? – Alvin

+0

Вам нужно будет создать пользовательский адаптер, который будет принимать созданные вами коллекции для заполнения данных в списке, чтобы создать пользовательский список. Для получения дополнительной информации, предоставьте код в вопросе, чтобы вы могли помочь вам. –

ответ

0

https://www.youtube.com/watch?v=cyk_ht8z6IA

Из того, что я могу сказать, я советую вам создать свой собственный адаптер. Я не уверен в том, что касается арраистов, поскольку большую часть времени я использовал только массивы.

+0

Да, я создал свой собственный адаптер, но я не уверен, как измениться, чтобы соответствовать арраисту. Если я буду использовать массивы, у меня есть еще 4-5 данных, что означает, что мне нужно создать несколько массивов. Цель моего создания arraylist состоит в том, что мой ListView однажды щелкнул, будет намерен на другую страницу, которая отображает несколько данных из массиваList – Alvin

0

Преобразовать ArrayList to Array

List<String> names = new ArrayList<String>(); 
// add stuff here 
String[] namesArr = names.toArray(new String[names.size()]); 

Надеется, что это помогает !!!

0

Ваш собственный класс адаптеров наследуется от ArrayAdapter, я полагаю. Согласно документации, ресурс, который вы предоставляете конструктора (2-й аргумент, R.layout.simple_list_item_1 в вашем случае) должен быть макет, содержащих TextView -

enter image description here

Поскольку у вас есть более сложный макет, чем просто TextView , вы должны расширить класс BaseAdapter. Затем

  1. Создайте свой собственный ArrayList (ы) для управления данными (An ArrayList<String> и ArrayList<Integer> в вашем случае).
  2. Обеспечьте добавление, удаление и другие подобные методы для управления списками.
  3. Переопределите метод getView, чтобы раздуть пользовательский макет, чтобы установить текст и изображение в соответствии с вашими требованиями.
Смежные вопросы