2016-08-10 1 views
0

Я понимаю, как это должно работать. У меня есть метод getAllNotes(), который возвращает ArrayList в моем DatabaseHandler класса который работает хорошо, когда я пытаюсь Переберите в ArrayList как это: -Android - Заполнение объектов ArrayList в пользовательском макете

for (Note note : notes) { 
     String log = "Id: " + note.getID() + " ,Title: " + note.getTitle() + " ,Description: " + note.getDescription(); 
     Log.d("Notes: ", log); 
    } 

Это как метод выглядит

DatabaseHandler.java enter image description here

Теперь мне нужно заполнить т hese данные в listview. После некоторой поисковой работы я выясню, что мне нужно использовать ArrayAdapter и Пользовательский макет с текстовым просмотром для каждого объекта в массиве (ID, Название, Описание).

Я не мог полностью понять, как ArrayAdapter должен работать.

MainActivity.java enter image description here

1- Почему мне нужно определить setAdapter к ListView и у меня уже есть пользовательских ListView?

2- ArrayAdapter требует идентификатора ресурса быть TextView, и у меня есть несколько TextViews в моем пользовательском макете !! списка следует

3- Результаты выглядят очень странно, я предположил, что у меня будет простой список только с названиями, но это то, что я получил.

enter image description here

ответ

0

Создать собственный класс адаптера.

Измените modeClass в ArraList Измените расположение в GetView()

Fast Пример:

private ArrayList<MenuModel> menuModels; 
private Context context; 

public MenuAdapter(ArrayList<MenuModel> menuModels, Context context) { 
    this.menuModels = menuModels; 
    this.context = context; 
} 

@Override 
public int getCount() { 
    return menuModels.size(); 
} 

@Override 
public Object getItem(int position) { 
    return menuModels.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    MenuModel menuModel = menuModels.get(position); 
    ViewHolder viewHolder; 

    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.item_menu, parent, false); 
     viewHolder = new ViewHolder(convertView); 
     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    viewHolder.textView.setText(menuModel.getTitle()); 
    viewHolder.image.setImageResource(menuModel.getResourceIcon()); 

    return convertView; 
} 

private static class ViewHolder { 
    ImageView image; 
    TextView textView; 

    public ViewHolder(View view) { 
     image = (ImageView) view.findViewById(R.id.); 
     textView = (TextView) view.findViewById(R.id.menuTitle); 
    } 
} 

}