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

  • 相关阅读:
    cin.clear()与cin.sync()的使用
    win10无法连接windows服务器,无法连接SENS服务
    Error:java: 错误: 不支持发行版本 5
    IDEA 整合 SSM 框架学习
    python requests请求状态码异常处理
    python+requests接口自动化入门--返回值的处理
    Python bug打断点调试学习
    locust知识导航栏
    ERROR: unknown command "pip"
    Python3 集合
  • 原文地址:https://www.cnblogs.com/lucky-star-star/p/4411068.html
Copyright © 2011-2022 走看看