美文网首页
ListView单选模式

ListView单选模式

作者: 来自唐朝的栗子 | 来源:发表于2020-09-07 18:37 被阅读0次

利用listview原生的方法,实现列表单选

1. 在布局文件中添加android:choiceMode="singleChoice"

<ListView
            android:id="@+id/lv_no_jiaru"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:divider="@color/line_com_top"
            android:dividerHeight="0.5dp"
            android:choiceMode="singleChoice"
            android:listSelector="@color/white"
            android:scrollbars="none" />

或者在java代码中添加

 lvNoJiaru.setChoiceMode(ListView.CHOICE_MODE_SINGLE);// 设置listview单选
 lvNoJiaru.setAdapter(relatedJobAdapter);

重点,setChoiceMode要放在setAdapter方法之前

2.在listview的点击事件中这么写

lvNoJiaru.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                lvNoJiaru.setItemChecked(i, true);//设置选中的item
                relatedJobAdapter.notifyDataSetChanged();// 通知adapter刷新布局
            }
        });

3.在adapter中这么写

@Override
    public View getView(int position, View convertView, ViewGroup viewGroup) {
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.item_related_job, null);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        // 通过isItemChecked方法,判断哪一个item被选中,然后进行相关逻辑处理
        if (this.listView.isItemChecked(position)) {
            holder.radioCheck.setChecked(true);
        } else {
            holder.radioCheck.setChecked(false);
        }
        return convertView;
    }

OK,搞定
效果如图所示

单选效果图.gif

相关文章

网友评论

      本文标题:ListView单选模式

      本文链接:https://www.haomeiwen.com/subject/wnulektx.html