这是我的标题
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 :(得分: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....
}