2011-09-19 79 views
1

這是我的頭適配器問題getTag(),返回null

public class MyAdapter extends ResourceCursorAdapter implements OnScrollListener { 

在我的適配器我設置的標籤這樣

 public View newView(Context context, Cursor cursor, ViewGroup parent) { 
       final View view = super.newView(context, cursor, parent); 
       final MyCache cache = new MyCache(); 
      view.setTag(cache); 
      } 

比我有一些方法

public void metA(){ 
//here I want to read the tag 
//how can I do that ? 
} 

我也是圖案滾動式收聽器

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
//how to read for example the third item in the list ? 
//item.getTag() returns null 
} 

我用getItem(0)嘗試過,但我也收到空指針異常... 什麼是正確的方式來讀取onScroll方法中的標記,視圖實際上包含什麼? 我知道我做的事很愚蠢,但我無法想象。

+0

我可以看到適配器的整個來源嗎? – Alex

+0

它太大了,但它自己的適配器不是問題。我的問題是如何在newView方法中設置witT setTag()的視圖的標記(getTag())。我的問題是如何閱讀標籤? – Lukap

回答

0

對於getTag()方法,您應該嘗試從您的View聲明中刪除final關鍵字,這可能是問題(我不是100%確定)。此外,我不確定你正在做什麼以及爲什麼你需要在每個View上設置一個對象MyCache。也許這將是一個更好的解決方案,只需添加一個MyCache實例作爲適配器類變量。

而對於getItem()方法,請確保您已正確實施此方法,並且您從對象列表中返回一個項目。

要獲得從View標籤,你只需要使用:

(MyCache)view.getTag(); 

編輯:得到View taggetView()方法,只需要用getView()方法的參數convertView

 public View getView(int position,View convertView,ViewGroup parent){ 
      if(convertView!=null) 
       (MyCache)convertView.getTag(); 
      // code.... 
     } 
+0

我知道:)。問題是我沒有看到它與getview方法中的視圖不一樣。 「public void metA()」如何在這個方法中獲取標籤?這是getview中沒有獲取標籤的問題。對不起,也許我沒有;當我問這個問題時,解釋得很好...... – Lukap

相關問題