I have a GridView, using a custom adapter (myAdapter extends BaseAdapter), where each item in the grid holds an ImageButton. getView() is working fine.
However, from elsewhere in my code, how can I update the image (setImageResource) for one particular item in the grid based on its position in the GridView?
So far, I've added this to my adapter class:
public void changeImage() {
Log.d(TAG, "Image change");
this.ImageButton.setImageResource(R.drawable.newImage);
}
And would like to write something like this: mygridview.getItemIdAtPosition(20).changeImage();
(doesn't comp开发者_C百科ile).
If u want to update the image for one particular item in the grid, what u can do is...have an onClickListener for all the images in the grid.
Now when u will click on any of the image, get the position of the image and change ur background resource for that particular image.
Example:
While adding the image: imageView.setOnClickListener(imageListener);
And the listener will be something like dis:
private OnClickListener imageListener = new OnClickListener() {
public void onClick(View v) {
int id = v.getId();
ImageView imgView = imageArray.get(id);
imgView .setBackgroundResource(R.drawable.newImage);
};
I hope u find it helpful.
In case of Images in a GridView I did this and it works also:
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View imgView, int position, long id) {
ImageView imageView = (ImageView) imgView;
imageView.setImageResource(R.drawable.newImage);
}
}); }
That's also my last problem. Here my solution I use data Model and adapter for my RecyclerView Firstly, register your new data to your model
DataModel detail = new DataModel(id, name, sat, image);
after that, use set to replace old value with the new one
mData.set(index, detail);
finally, refresh your adapter
if(adapter!=null)
adapter.notifyItemChanged(index);
精彩评论