首页 > ListView 根据position 获得某一行?

ListView 根据position 获得某一行?

    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));
            }
        }
        

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


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


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


listView.pointToPosition()


弄了半天 ,终于解决了。下面分享下我的解决办法,希望可以帮到别人。不过上面 @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;
    }


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

【热门文章】
【热门文章】