Как заполнить пользовательский макет ListView данными из списка массивов - PullRequest
1 голос
/ 09 декабря 2011

У меня есть макет, определенный с некоторыми кнопками, и виджет ListView.У меня также есть макет XML, определенный для каждой строки в ListView, с 2 TextViews.У меня также есть данные в формате List<String[]>, где String[] заполняется 3 элементами.Я хочу отобразить данные в ListView, при этом 2 из 3 элементов массива String (содержатся в каждом элементе списка) назначены одной из строк TextView в макете ListView.

Я могу получитьListView, используя одно из представлений по умолчанию, чтобы отобразить полный список только одного элемента в массиве, разбив его на один массив значений и используя ArrayAdapter<String>, но я не знаю, как это сделать длянесколько строк в макете ListView.

Буду признателен за любую помощь.

Кроме того, кроме того, если данные в исходном списке List<String[]> должны измениться, как я могу обновить виджет ListView?

Спасибо за любой совет.

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

Вы должны создать собственное расширение ArrayAdapter:

class MyAdapter extends ArrayAdapter<String[]>{
        public MyAdapter(Context context, int textViewResourceId, ArrayList<String[]> objects) {
            super(context, textViewResourceId, objects);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if( convertView== null ) convertView = getLayoutInflater().inflate(R.layout.your_layout, null);

            String[] strings = getItem(position);
            TextView line1 = (TextView)convertView.findViewById(R.id.line1);
            line1.setText(strings[0])
            TextView line2 = (TextView)convertView.findViewById(R.id.line2);
            line2.setText(strings[0])
            //...

            return convertView;
        }
    }

Чтобы обновить список, вызовите метод адаптеров notifyDataSetChanged().

0 голосов
/ 09 декабря 2011

Мне кажется, эта ссылка полезна для вас

http://blog.ryanharter.com/?p=108

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