利用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,搞定
效果如图所示

网友评论