getTag()的适配器问题,返回null

时间:2011-09-19 10:49:50

标签: android tags scroll nullpointerexception

这是我的标题

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方法中读取标记的正确方法是什么,视图实际包含什么? 我知道我做了一些非常愚蠢的事情,但我无法理解。

1 个答案:

答案 0 :(得分:0)

对于getTag()方法,您应该尝试从final声明中删除View关键字,这可能是问题(我不是100%肯定)。另外,我不确定yoru MyCache()类正在做什么以及为什么需要在每个MyCache上设置View对象。也许只是添加一个MyCache实例作为适配器类变量是一个更好的解决方案。

对于getItem()方法,请确保您已正确实施此方法,并从对象列表中返回项目。

要从View获取标记,您只需使用:

   (MyCache)view.getTag();

修改:要获取View tag方法中的getView(),只需使用convertView方法的参数getView()

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