我有一个ListView
用于在我的应用程序中显示文件/文件夹层次结构的工具。我正在使用带有 anImageView
和 a的自定义布局TextView
。我想ImageView
根据TextView
文本更改图像是以太文件夹或文件。我可以在不使用自定义的情况下执行此操作,ArrayAdapter
或者如果我必须使用自定义ArrayAdapter
如何ImageView
在运行时更改图标。?
问问题
3242 次
5 回答
1
每当列表中的每个条目需要多个变量项时,您都必须使用自定义适配器(即,在您的情况下,您有两个,theImageView
和 the TextView
)。在运行时更改数据最容易通过调用ArrayAdapter.notifyDataSetChanged()
.
于 2013-09-11T07:09:48.773 回答
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
是我从活动类传递给自定义适配器的数组。
这是内存效率最高、速度最快的方法。
于 2013-09-11T07:19:16.233 回答
0
您可以在自定义适配器的 getView 功能中检查并根据 textview 设置 imageview。有关自定义阵列适配器,请参见此示例。
于 2013-09-11T07:11:01.067 回答
0
您可以使用ImageView.setImageResource(int)方法。
于 2013-09-11T07:11:31.703 回答
-1
试试这个例子,它可能会解决你的问题。
于 2013-09-11T07:10:07.213 回答