listview选中item背景变色

当点击listview时如果想点击item松开后,选中item背景色不变 在setOnItemClickListener里可以直接添加下面代码,区别于seletor,seletor是选中松开后直接恢复

group_ltv.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
          for (int i = 0; i < parent.getCount(); i++) {
            View v = parent.getChildAt(i);
            if (position == i) {
                v.setBackgroundColor(getResources().getColor(R.color.low_huise3));
            } else {
                v.setBackgroundColor(Color.TRANSPARENT);
            }
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现两个ListView联动的方法有很多种,这里介绍一种比较常用的方法。 1. 在左侧ListView的适配器中,添加一个变量用于保存当前选中的位置(默认为-1),并提供一个方法用于设置选中位置并刷新列表。 2. 在左侧ListViewitem布局中添加一个Selector,用于设置选中和未选中状态下的背景色。 3. 在左侧ListView的OnItemClickListener中,调用上述方法设置选中位置,并调用notifyDataSetChanged()刷新列表。 4. 在右侧ListView的适配器中,重写getView()方法,判断当前位置是否为左侧ListView选中位置,如果是则设置背景色。 示例代码如下: ```java // 左侧ListView的适配器 public class LeftAdapter extends BaseAdapter { private List<String> mData; private int mSelectedPosition = -1; public void setSelectedPosition(int position){ mSelectedPosition = position; notifyDataSetChanged(); } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){ convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.left_item_layout, parent, false); } TextView textView = convertView.findViewById(R.id.text_view); textView.setText(mData.get(position)); if(position == mSelectedPosition){ convertView.setBackgroundResource(R.drawable.left_item_selected_bg); }else{ convertView.setBackgroundResource(R.drawable.left_item_normal_bg); } return convertView; } } // 右侧ListView的适配器 public class RightAdapter extends BaseAdapter { private List<String> mData; private int mSelectedPosition = -1; public void setData(List<String> data) { mData = data; notifyDataSetChanged(); } @Override public int getCount() { return mData == null ? 0 : mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){ convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.right_item_layout, parent, false); } TextView textView = convertView.findViewById(R.id.text_view); textView.setText(mData.get(position)); if(position == mSelectedPosition){ convertView.setBackgroundResource(R.drawable.right_item_selected_bg); }else{ convertView.setBackgroundResource(R.drawable.right_item_normal_bg); } return convertView; } public void setSelectedPosition(int position){ mSelectedPosition = position; notifyDataSetChanged(); } } // 在Activity中使用 public class MainActivity extends AppCompatActivity { private ListView mLeftListView; private ListView mRightListView; private LeftAdapter mLeftAdapter; private RightAdapter mRightAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLeftListView = findViewById(R.id.left_list_view); mRightListView = findViewById(R.id.right_list_view); mLeftAdapter = new LeftAdapter(); mLeftAdapter.setData(Arrays.asList("A", "B", "C", "D", "E")); mLeftListView.setAdapter(mLeftAdapter); mRightAdapter = new RightAdapter(); mRightListView.setAdapter(mRightAdapter); mLeftListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mLeftAdapter.setSelectedPosition(position); mRightAdapter.setSelectedPosition(position); } }); } } ``` 其中,left_item_selected_bg和right_item_selected_bg是选中状态下的背景色,left_item_normal_bg和right_item_normal_bg是未选中状态下的背景色。可以自行定义和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值