📜  listview 获取选中的java(1)

📅  最后修改于: 2023-12-03 15:17:24.664000             🧑  作者: Mango

ListView获取选中的Java

在Android开发中,经常需要使用ListView控件来展示列表数据。而有时候我们需要获取用户选中的项,以便进行后续操作。下面介绍几种获取ListView选中项的方法。

基本方法:OnItemClickListener

ListView提供了一个OnItemClickListener接口,可以监听列表项的点击事件。我们可以在监听器中获取用户选中的项。

ListView listView = findViewById(R.id.list_view);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // position表示用户选中的项的索引
        // do something
    }
});
获取多选项:SparseBooleanArray

如果ListView支持多选,我们可以使用SparseBooleanArray来获取选中项的列表。

ListView listView = findViewById(R.id.list_view);
final SparseBooleanArray checkedItems = listView.getCheckedItemPositions();
for (int i = 0; i < checkedItems.size(); i++) {
    if (checkedItems.valueAt(i)) {
        // 获取选中项的索引
        int position = checkedItems.keyAt(i);
        // do something
    }
}
获取数据对象:getItemAtPosition和getItemIdAtPosition

如果ListView的每个项是具有数据对象的JavaBean,我们可以使用getItemAtPosition和getItemIdAtPosition方法来获取选中项的数据对象。

ListView listView = findViewById(R.id.list_view);
MyAdapter adapter = new MyAdapter(getContext(), dataList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // 获取选中项的数据对象
        Object item = parent.getItemAtPosition(position);
        // do something
    }
});

注意:如果不设置Id,则getItemIdAtPosition返回值是ListView.INVALID_ROW_ID。

结论

以上介绍了三种常见情况下获取ListView选中项的方法。其中基本方法OnItemClickListener适用于大部分情况,而SparseBooleanArray在支持多选时非常实用,getItemAtPosition和getItemIdAtPosition则适用于每个项都有数据对象的情况。