zoukankan      html  css  js  c++  java
  • 安卓 listview与arrayadapter

    今天有感于群里讨论的一个问题,很简单,但是问题还真是需要仔细看一下

    问题:定义了一个最简单的arrayadapter,和listview结合使用,灭个item就显示个最简单的textView,一共6个item,一屏显示3个,遇到的问题就是,程序运行后,点击一屏显示出来的3个item没有问题,但是当滑动超出了一屏,再次点击item的时候就会出现nullpointer。

    看了一下onitemlistener,是这么写的:

    list.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    TextView tv = (TextView) list.getChildAt(position).findViewById(R.id.text);
    
    tv .setText("");
    
    }

    问题就出在了list.getChildAt(position).findViewByID(),这一句,当加第4个item的时候,position的值是4,但是调试的发现list里面只有3个child不为空,所以得到的第4个为空,查了一下发现安卓的listview有个缓存机制,listview只缓存第一屏的item,在往后加载item的时候,只会复用之前的布局,所以listview里面存的组件最大值只有第一屏的最后一个position。

    所以后面的item要想正常相应监听,找控件的时候不要从listview找,应该从你点击的view里找,改成view.findViewByID(),就可以了。

    这篇简单看看:http://www.cnblogs.com/over140/archive/2011/03/23/1991100.html

  • 相关阅读:
    Asp.net 2.0 动态加载其他子目录用户控件问题
    C# 实现 类似Android的Toast
    C#编译成x86与x64区别
    C#封送回调函数和委托
    软键盘 WinCE Mobile
    JNI由C编译方式改成C++编译方式
    JNI itoa 不能使用的问题
    没有Root 时Data/Data文件夹不可见
    javah用法
    接口测试总结
  • 原文地址:https://www.cnblogs.com/lucky-star-star/p/4411068.html
Copyright © 2011-2022 走看看