Android人口列表视图

时间:2011-10-12 08:25:32

标签: android listview adapter

我有一个关于在an​​droid中填充listviews的一个非常基本的问题。现在,如果我想这样做,我使用SimpleCursorAdapter,它的效果非常好。但是由于我的程序变得越来越复杂,我想在显示之前操纵数据(你知道,格式化字符串aso)我面临的问题是,在从数据库请求到ListElements的路上,实际上并没有点,我可以操纵数据。由于每个ListElement有四个TextView,因此,据我所知,ArrayAdapter是不可能的。由于我对Android很新,我甚至不知道谷歌的用途。

非常感谢你的帮助, 丹尼尔

1 个答案:

答案 0 :(得分:0)

这样做的常见方法是在适配器的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;
    }
}

您可以找到完整的代码示例there。使用holder示例,您可以设置4个视图并更新它们。