Java Android按id更新自定义XML imageView
我对安卓非常陌生。我正在使用一个列表视图,它使用一个自定义的list_v.xml来容纳x2个文本视图。我还包括了一个imageView,我想通过活动更新它Java Android按id更新自定义XML imageView,java,android,xml,android-listview,simpleadapter,Java,Android,Xml,Android Listview,Simpleadapter,我对安卓非常陌生。我正在使用一个列表视图,它使用一个自定义的list_v.xml来容纳x2个文本视图。我还包括了一个imageView,我想通过活动更新它 <?xml version="1.0" encoding="utf-8"?> 我猜我需要引用列表而不是listView.findViewById。我可能完全没有抓住要点 我可以将绘图硬编码为上面的xml,但我希望重用此视图并为其他视图更新图像 这没有道理。适配器将根据需要创建视图,并且这种方法不会节省任何内存 无论如何,若要实现
<?xml version="1.0" encoding="utf-8"?>
我猜我需要引用列表而不是listView.findViewById。我可能完全没有抓住要点
我可以将绘图硬编码为上面的xml,但我希望重用此视图并为其他视图更新图像
这没有道理。适配器将根据需要创建视图,并且这种方法不会节省任何内存
无论如何,若要实现目标,需要扩展BaseAdapter类并重写它的getView()方法
类CustomArray扩展了SimpleAdapter{
public CustomArray(Context context,ArrayList list1, int resource,
String[] list2, int[] list3) {
super(context, list1, resource, list2, list3);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null){
convertView = super.getView(position, convertView, parent);
((ImageView)convertView.findViewById(R.id.icon)).setImageDrawable(R.drawable.tip_selected);
}
return convertView;
}
}
并创建它:
private void makeActionOverflowMenuShown() {
CustomArray adapter = new CustomArray(TopTipsActivity.this, oslist,
R.layout.list_v,
new String[] { TAG_Cat,TAG_Title},
new int[] {R.id.title,R.id.body});
listView.setAdapter(adapter);
这很简单,只需编辑
HashMap
即可
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_Cat, cat);
map.put(TAG_Title, title);
// the following line will add the default image to your map
map.put("Image", String.valueOf(R.drawable.ic_launcher));
ListAdapter adapter = new SimpleAdapter(TopTipsActivity.this, oslist,
R.layout.list_v,
new String[] { TAG_Cat, TAG_Title, "Image"},
new int[] {R.id.title, R.id.body, R.id.icon});
是的,你需要访问列表中的每一行/元素,然后从中找到ImageView。因此,基本上你应该使用一个扩展BaseAdapter的自定义适配器类。天哪,它真的很简单。我对Android真的很陌生!非常感谢。
private void makeActionOverflowMenuShown() {
CustomArray adapter = new CustomArray(TopTipsActivity.this, oslist,
R.layout.list_v,
new String[] { TAG_Cat,TAG_Title},
new int[] {R.id.title,R.id.body});
listView.setAdapter(adapter);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_Cat, cat);
map.put(TAG_Title, title);
// the following line will add the default image to your map
map.put("Image", String.valueOf(R.drawable.ic_launcher));
ListAdapter adapter = new SimpleAdapter(TopTipsActivity.this, oslist,
R.layout.list_v,
new String[] { TAG_Cat, TAG_Title, "Image"},
new int[] {R.id.title, R.id.body, R.id.icon});