Android 列表视图:根据 ID 选中项并获取选中数据
以下是一个可能的实现:
首先,定义一个类来表示每个项目:
public class CheckItem {
private int id;
private String name;
private boolean checked;
public CheckItem(int id, String name, boolean checked) {
this.id = id;
this.name = name;
this.checked = checked;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
}
然后,定义一个适配器类CheckItemAdapter,它继承自BaseAdapter,用于显示所有项目:
public class CheckItemAdapter extends BaseAdapter {
private List<CheckItem> items;
public CheckItemAdapter(List<CheckItem> items) {
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return items.get(position).getId();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
view = inflater.inflate(android.R.layout.simple_list_item_multiple_choice, parent, false);
}
CheckItem item = items.get(position);
TextView text = view.findViewById(android.R.id.text1);
text.setText(item.getName());
CheckedTextView checked = (CheckedTextView) view;
checked.setChecked(item.isChecked());
return view;
}
public List<CheckItem> getCheckedItems() {
List<CheckItem> checkedItems = new ArrayList<>();
for (CheckItem item : items) {
if (item.isChecked()) {
checkedItems.add(item);
}
}
return checkedItems;
}
}
其中,items表示所有项目,getView()方法用于显示每个项目,getCheckedItems()方法用于获取所有选中的项目。
接下来,在Activity中使用适配器:
public class MainActivity extends AppCompatActivity {
private ListView listView;
private CheckItemAdapter adapter;
private List<CheckItem> items;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化数据
items = new ArrayList<>();
items.add(new CheckItem(1, 'Item 1', false));
items.add(new CheckItem(2, 'Item 2', false));
items.add(new CheckItem(3, 'Item 3', false));
items.add(new CheckItem(4, 'Item 4', false));
items.add(new CheckItem(5, 'Item 5', false));
items.add(new CheckItem(6, 'Item 6', false));
// 初始化ListView和适配器
listView = findViewById(R.id.listView);
adapter = new CheckItemAdapter(items);
listView.setAdapter(adapter);
// 根据id选中项目
int idToSelect = 3;
for (CheckItem item : items) {
if (item.getId() == idToSelect) {
item.setChecked(true);
break;
}
}
// 刷新ListView
adapter.notifyDataSetChanged();
// 获取选中的项目
List<CheckItem> checkedItems = adapter.getCheckedItems();
for (CheckItem item : checkedItems) {
Log.d('MainActivity', 'Checked item: ' + item.getName());
}
}
}
在onCreate()方法中,先初始化所有项目,然后把它们放到适配器中,并设置给ListView。接着,根据id选中项目,并刷新适配器。最后,获取所有选中的项目并打印它们的名称。
原文地址: https://www.cveoy.top/t/topic/nyqv 著作权归作者所有。请勿转载和采集!