2013-02-05 34 views
0

我在訪問GridView中的單個項目時遇到問題。我有圖像的網格視圖。在長按單個項目時,我正在激活具有多模式監聽器的CAB菜單。在監聽器裏,我能夠做在Android中訪問GridView中的單個項目

gridView.setVisibility(View.GONE); 

但我無法做到這一點,它給空指針異常

gridView.getChildAt(position).setVisibility(View.GONE); 

我已經試過這也:

ViewGroup gridChild = (ViewGroup) gridView.getChildAt(1); 
int childSize = gridChild.getChildCount(); 
for(int k = 0; k < childSize; k++) { 
if(gridChild.getChildAt(k) instanceof ImageView) { 
     gridChild.getChildAt(k).setVisibility(View.GONE); 
} 
} 

如何我能克服這個嗎?

更新:

在我的適配器getView()方法:

imageview.setOnTouchListener(new OnTouchListener(){ 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    overlay.setVisibility(View.VISIBLE); 
    imageview.setBackgroundColor(Color.parseColor("#f9a49c")); 
    return false; 
}}); 

我想在這裏做的,我只是想的onclick改變背景顏色。但是顏色正在改變當前視圖中的最後一個元素。而且這也不是留在新聞後。新聞發佈後,它就會消失。

回答

1

在您的適配器getView()方法,您應視圖設置爲可見或不可見,這取決於數據備份適配器的狀態。

您不應該假設每個項目都有獨特的視圖,適配器通常會重複滾動時超出屏幕的項目的視圖。

+0

更新了問題。我在這裏想要做的是,我只想改變背景顏色onclick。但是顏色正在改變當前視圖中的最後一個元素。而且這也不是留在新聞後。新聞發佈後,它就會消失。 – intrepidkarthi

0

你可以試着通知適配器

if(gridChild.getChildAt(k) instanceof ImageView) { 

gridChild.getChildAt(k).setVisibility(View.GONE); 

notifyDataSetChanged(); 
} 
+0

試過了。不工作! – intrepidkarthi