关于ListView中item点击变色及list滑动的问题

先上代码   lastposition是我定义的一个全局变量默认为-1

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                        @Override

                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                            String str = mlist.get(position).bookclass;

                            get(urlforresult+str);//这是我自己的get请求 可以忽视

//以下为主要代码

                            view.setBackgroundColor(Color.GRAY);

                            if (lastposition!=-1&&lastposition!=position){

                                               listView.getChildAt(lastposition).setBackgroundColor(Color.WHITE);

                            }

                            lastposition=position;

                        }

                    });

然后我又在适配器的getView中通过

if (position==0&&convertView!=null){

              listView.performItemClick(convertView,0,R.layout.item_fenlei);

          }

来模拟点击第一项让他默认变为灰色,看上去代码没有太大的问题

然后运行后确实和想象中一样,默认点击了第一项,变为了灰色,点第二项的时候第一项也还原成了白色,于是我心想解决了!于是就没有去深究其中存在的问题。


过了两天,当我打开我的app时,因为我是侧躺在沙发上,手机自动旋转了!

旋转之后就出现了一个问题,那就是我当前页面上的ListView,在我这个页面不能完全显示出来,内容需要下拉。

然后问题就出现了,当我下拉后,发现下面多了个灰色的按钮,当我随便点击几个item时,item不仅显示颜色不对,app还闪退了,于是我马上连上了手机,看日志,发现listview的getChildAt出现了空指针异常。于是我开始了百度,发现了一个重要的问题,ListView的position是当前页面上显示的position,当我滑动的时候,就进行了改变,于是我显示就出现了问题,app闪退了。然后我换了一种方法,才彻底解决了这个问题。

方法如下:

首先我在适配器中声明一个int类型的变量

private int selectedposition=0;

用来确定我点击的按钮的位置,然后再在适配器中写一个方法,用来传入posotion

public void selectedposition(int position){

this.selectedposition = position;

}

然后在把我上面放进ListView的适配器 声明为全局变量

在OnItemClickListener中就可以调用我的适配器中的selectedposition方法

adapter.selectedposition(position);//传入OnItemClickListener中返回的position

adapter.notifyDataSetChanged();//通知适配器更新

然后再在适配器中个getView方法中判断

if (position==selectedPosition){

              convertView.setBackgroundColor(Color.GRAY);

          }else {

              convertView.setBackgroundColor(Color.WHITE);

          }

于是我旋转屏幕后也没有出现问题了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

友情链接更多精彩内容