android - ListView 根据position 获得某一行?
天蓬老师
天蓬老师 2017-04-17 15:30:06
[Android讨论组]
    final ListView listView = getListView();
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
        @Override
        public void onItemCheckedStateChanged(android.view.ActionMode mode, int position, long id, boolean checked) {
            RelativeLayout layout = (RelativeLayout) listView.getChildAt(position);
            if (checked) {
                //layout.setBackgroundColor(Color.parseColor("#c0c0c0"));
              //  TextView textView = (TextView) layout.findViewById(R.id.title);
                Log.d("TAG", String.valueOf(position)+"-----"+listView.getCount());
                selectItem.add(String.valueOf(position));
            } else {
                layout.setBackgroundColor(Color.parseColor("#ffffff"));
                Log.d("TAG", String.valueOf(position)+"-----"+layout.toString());
                selectItem.remove(String.valueOf(position));
            }
        }
        

之前没说清楚 不好意思 其实我的目的就是获得当前的选中项,然后修改它的背景啊、图片等样式。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(5)
ringa_lee

在adapter内定义你的ViewHolder,把item的layout作为ViewHolder的成员变量,在adapter的getItem方法返回相应position的ViewHolder对象,通过listView.getAdapter().getItem(position)得到item的ViewHolder,也就得到item的layout了,这下就不会有null的情况了。

怪我咯

弄了半天 ,终于解决了。下面分享下我的解决办法,希望可以帮到别人。不过上面 @chuyao 也提供了个办法,大家可以看看。

还是直接贴代码吧...


 public void onItemCheckedStateChanged(android.view.ActionMode mode, int position, long id, boolean checked) {
         
                    adapter.notifyDataSetChanged();//通知样式变化
    
                }
                
            

  private class MySimpleAdapter extends SimpleAdapter {
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);
        if (view != null) {
            if (getListView().isItemChecked(position)) {
                view.setBackgroundColor(Color.parseColor("#c0c0c0"));
            } else {
                view.setBackgroundColor(Color.parseColor("#ffffff"));
            }
        }
        return view;
    }

大家讲道理

我怎么感觉有bug呢....不是应该只有一个是选中色吗!

怪我咯

listView.pointToPosition()

高洛峰

为什么因为listview.getchildat 只能获得当前显示的layout?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号