【问题标题】:Adapter problem with getTag() ,return nullgetTag() 的适配器问题,返回 null
【发布时间】:2011-09-19 10:49:50
【问题描述】:

这是我的标题

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

【问题讨论】:

  • 我可以看到你的适配器的全部来源吗?
  • 它太大了,但它自己的适配器不是问题。我的问题是如何获取我在 newView 方法中使用 setTag() 设置的视图的标签 (getTag())。我的问题是如何阅读标签?

标签: android tags scroll nullpointerexception


【解决方案1】:

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

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

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

   (MyCache)view.getTag();

编辑:要在您的getView() 方法中获取View tag,只需使用getView() 方法的参数convertView

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

【讨论】:

  • 我知道:)。关键是我没有视图,它与 getview 方法中的视图不同。 “public void metA()”如何在这个方法中获取标签?这就是在 getview 中没有获取标签的问题。对不起,也许我没有解释清楚,当我问这个问题时......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 2019-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多