Списки пользователей Android - PullRequest
0 голосов
/ 12 октября 2011

У меня есть очень простой вопрос о заполнении списков в Android. Прямо сейчас, если я хочу сделать это, я использую SimpleCursorAdapter, и он работает очень хорошо. Но поскольку моя Программа становится все более сложной, я хочу манипулировать данными, прежде чем они будут отображаться (вы знаете, форматирование строк также). Проблема, с которой я сталкиваюсь, заключается в том, что на пути от запроса базы данных к ListElements на самом деле Точка, где я могу манипулировать данными. Поскольку у меня есть четыре TextView для каждого ListElement, ArrayAdapter, насколько я знаю, невозможен. Поскольку я новичок в Android, я даже не знаю, что искать в Google.

Большое спасибо за вашу помощь, Даниэль

1 Ответ

0 голосов
/ 12 октября 2011

Обычный способ сделать это - getView вашего адаптера. Вы могли бы сделать что-то вроде этого:

class ContactAdapter extends ArrayAdapter<String> {

        private LayoutInflater mInflater;

        public ContactAdapter(Context context, int textViewResourceId, List<String> items) {
            super(context, textViewResourceId, items);
            mInflater = LayoutInflater.from(context);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            ViewHolder holder;
            if (convertView == null) {

                convertView = mInflater.inflate(R.layout.rowcontact, null);
                holder = new ViewHolder();
                holder.lastname = (TextView) convertView.findViewById(R.id.rowTop);
                holder.firstname = (TextView) convertView.findViewById(R.id.rowBottom);
                holder.iconContact = (ImageView) convertView.findViewById(R.id.iconContact);
                convertView.setTag(holder);
            } else {

                holder = (ViewHolder) convertView.getTag();
            }
            String item = getItem(position);
            int i = (int) (Math.random() * 5 + 1);

            switch (i) {
            ...
            }
            if (item != null) {
                holder.lastname.setText(item.split("-")[0]);
                holder.firstname.setText(item.split("-")[1]);
                holder.iconContact.setImageBitmap(bm);
            }
            return convertView;
        }
    }

    static class ViewHolder {
        TextView lastname;
        TextView firstname;
        ImageView iconContact;
    }
}

Вы можете найти полный пример кода там . На примере держателя вы можете настроить 4 вида и обновить их.

...