Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Как сделать более одного TextView в ячейке ListView

#android #java #массивы


Делаю через ArrayAdapter, но в нем получается применить только к одной item_list.
Код неправильный, но все же:
 List namelist = new ArrayList();
 List streetlist = new ArrayList();

                    for(int i=0;i adapter = new ArrayAdapter(getActivity(),
                            R.layout.item_list_service, R.id.item_text_service, namelist);

   ArrayAdapter adapter2 = new ArrayAdapter(getActivity(),
                            R.layout.item_list_service, R.id.item_text_street_service,
streetlist);
   mDrawerList.setAdapter(adapter);
   mDrawerList.setAdapter(adapter2);
    


Ответы

Ответ 1



для реализации двух текстовых полей в айтеме ListView вовсе не обязательно делать свой кастомный адаптер - стандартный SimpleAdapter (SimpleCursorAdapter) отлично с этим справляется , так же он позволяет еще и картинку разместить . Есть и пара-тройка вариантов стандартной разметки в фреймворке Android под это дело , вроде simple_list_item_2.xml / Часто проще и рациональнее воспользоваться готовыми инструментами , чем дублировать имеющююся функциональность увеличивая код . в качестве примера

Ответ 2



Код Адаптера private class CatAdpter extends ArrayAdapter{ public CatAdpter(Context context) { super(context, R.layout.list_id_name_adapter, spsBD); // TODO Auto-generated constructor stub } @SuppressLint("InflateParams") @Override public View getView(int position, View convertView, ViewGroup parent){ SpsBD spsBD = getItem(position); if(convertView == null){ convertView = LayoutInflater.from(getContext()) .inflate(R.layout.list_id_name_adapter, null); } ((TextView) convertView.findViewById(R.id.tvIdSPSListAdapter)).setText(spsBD.idSps); ((TextView) convertView.findViewById(R.id.tvNameSPSListAdapter)).setText(spsBD.nameSps); return convertView; } }

Комментариев нет:

Отправить комментарий