2010-02-07 73 views
4

我有一個GridView,使用自定義適配器(myAdapter擴展BaseAdapter),其中網格中的每個項目都包含一個ImageButton。 getView()工作正常。Android GridView - 基於位置更新視圖

但是,從我的代碼中的其他地方,我如何根據GridView中的位置更新網格中某個特定項目的圖像(setImageResource)?

到目前爲止,我已經添加到了我的適配器類:

public void changeImage() { 
     Log.d(TAG, "Image change"); 
     this.ImageButton.setImageResource(R.drawable.newImage); 
} 

,很想寫這樣的事情:mygridview.getItemIdAtPosition(20).changeImage();(不編譯)。

回答

3

如果你想更新網格中某個特定項目的圖像,你可以做的是......爲網格中的所有圖像設置一個onClickListener。

現在,當你點擊任何圖像時,獲取圖像的位置並更改該特定圖像的背景資源。

實施例:

在添加圖像:imageView.setOnClickListener(imageListener);

與聽者會像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); 
    }; 

我希望你發現它有用。

3

在一個GridView我做這個圖片的情況下,它的工作原理也:

gridview.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView<?> parent, View imgView, int position, long id) { 
    ImageView imageView = (ImageView) imgView; 
    imageView.setImageResource(R.drawable.newImage); 
     } 
    }); } 
0

這也是我的最後一個問題。在這裏我的解決方案我使用的數據模型和適配器我RecyclerView 首先,註冊新的數據模型

DataModel detail = new DataModel(id, name, sat, image); 

,使用設定的新

mData.set(index, detail); 
以取代舊值

最後,刷新你的適配器

if(adapter!=null) 
    adapter.notifyItemChanged(index);