Здесь я определил SiteAdapter и простирается от ArrayAdapter:, как использовать arrayadapter.getview методу
public class SiteAdapter extends ArrayAdapter<Site> {
private int resourceId;
private List<Site> sites = null;
private Context context;
public SiteAdapter(Context context, int resource, List<Site> objects) {
super(context, resource, objects);
this.context = context;
this.resourceId = resource;
this.sites = objects;
}
@Override
public Site getItem(int position) {
return sites.get(position);
}
@Override
public int getCount() {
return sites.size();
}
//get the viewpage which inflate by site_layout.xml file
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Site site = getItem(position);
View view = convertView;
if (view == null) {
LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(resourceId, null);
}
//this place we need to get the whole widget in site_layout.xml file
ImageView i1 = (ImageView) view.findViewById(R.id.thumbnail);
TextView address = (TextView) view.findViewById(R.id.address);
TextView t1 = (TextView) view.findViewById(R.id.name);
TextView t3 = (TextView) view.findViewById(R.id.distance);
i1.setImageResource(site.getImageId());
address.setText(site.getAddress());
String name = site.getName();
String result = parse(name);
//set name of the view
t1.setText(name);
t3.setText("<" + site.getDistance() + "m");
return view;
}
и в MainActivity, я установил ListView с помощью этого адаптера сайта, и я выделил значение R.drawable.blank только для ImageView, и теперь мне нужно изменить ImageView, а затем получить каждый вид строки через метод getAddapter, возвращенный вид, но вопрос в том, почему ImageView внутри такой взгляд не может заменить новое значение (изображения), то результат всегда получится предыдущий R.drawable.blank ImageView:
здесь MainActivity сниппет:
View view = siteAdapter.getView(2, null, listView);
ImageView image1 = ((ImageView)view.findViewById(R.id.thumbnail));
image1.invalidate();
image1.setImageResource(R.drawable.amap_end);
siteAdapter.notifyDataSetChanged();
Сначала рассмотрим использование шаблона ViewHolder. Проверьте, что значение внутри 'getImageId()' – Aniruddha
просто измените значение ** setImage ** для вашего конкретного элемента arraylist, который вы хотите изменить, и вызовите ** adapter.notifyDataSetChange() **. Он изменит ваше изображение в виде списка. –