我有一个ListView
用于在我的应用程序中显示文件/文件夹层次结构。我正在使用包含ImageView
和TextView
的自定义布局。我想根据ImageView
文本更改TextView
的图像是ether文件夹或文件。我是否可以在不使用自定义ArrayAdapter
的情况下执行此操作,或者如果必须使用自定义ArrayAdapter
,如何在运行时更改ImageView
图标。?
答案 0 :(得分:0)
如果列表中的每个条目需要多个变量项,则必须使用自定义适配器(例如,在您的情况下,您有两个,ImageView
和TextView
。通过调用ArrayAdapter.notifyDataSetChanged()
可以最轻松地在运行时更改数据。
答案 1 :(得分:0)
试试这个例子,它可以解决你的问题。
答案 2 :(得分:0)
您可以在自定义适配器的getView功能中检查,并根据textview设置imageview。 有关自定义数组适配器,请参阅this example。
答案 3 :(得分:0)
您可以使用ImageView.setImageResource(int)方法。
答案 4 :(得分:0)
在自定义适配器类中使用此getView()
方法。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View newRowView = convertView;
ViewHolder viewHolder;
if(newRowView == null)
{
LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
newRowView = inflator.inflate(R.layout.my_list, parent,false);
viewHolder = new ViewHolder();
viewHolder.name = (TextView) newRowView.findViewById(R.id.textInList);
viewHolder.image = (ImageView) newRowView.findViewById(R.id.iconInList);
newRowView.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolder) newRowView.getTag();
}
viewHolder.image.setImageDrawable(textImages[position]);
viewHolder.name.setText(names[position]);
return newRowView;
}
static class ViewHolder
{
TextView name;
ImageView image;
}
此处textImages
& names
是我从活动类传递给自定义适配器的数组。
这是内存效率最高,速度最快的方式。