开发者

Android GridView - update View based on position

开发者 https://www.devze.com 2022-12-19 22:58 出处:网络
I have a GridView, using a custom adapter (myAdapter extends BaseAdapter), where each item in the grid holds an ImageButton. getView() is working fine.

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);
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号