[英]Android ListView: get item's position from its value?
我是Android和Java的新手。 我想知道是否有一种方法可以通过其值查找ListView项目的位置。
例如:
如果我的ListView中有一个显示字符串“ Product 1108”的项目,如何获得“ Product 1108”的位置?
private void updateListView() {
final ListView lvCheckList = (ListView) findViewById(R.id.lvCheckList);
Map<String, ?> keys = checkListData.getAll();
ArrayList<String> checkListStrings = new ArrayList<String>();
for (Map.Entry<String, ?> entry : keys.entrySet()) {
if (entry.getKey().equals(currentList + entry.getValue())) {
checkListStrings.add((String) entry.getValue());
}
if (entry.getKey().equals(currentList + entry.getValue() + "Checked")) {
//set Item to checked / unchecked
}
}
ArrayAdapter<String> checkListArrayAdapter = new ArrayAdapter<String>(
this, android.R.layout.simple_list_item_checked,
checkListStrings);
lvCheckList.setAdapter(checkListArrayAdapter);
}
此代码获取存储在SharedPreferences中的项目并将其显示在ListView中。 不要问我为什么会起作用,它会起作用。
现在看到这一行:
if (entry.getKey().equals(currentList + entry.getValue() + "Checked")) {
//set Item to checked / unchecked
}
我要在这里发生的事情是将列表项设置为选中或未选中,但是我认为这是可能的,因为尚未填充listview。 因此,在ArrayAdapter中,我需要对listview的项目进行排序,找到具有我要查找的值的项目,然后获取该项目的位置,以便可以使用以下代码:
lvCheckList.setItemChecked(position, value);
希望这是有道理的。
如果您有BaseAdapter
,则应该有一个类似ArrayList
存储项,可以在其中使用indexOf(obj)
方法。
如果使用的是ArrayAdapter
,则可以使用getPosition(obj);
这是循环遍历ArrayAdapter
的示例(让我知道是否使用其他方法):
ArrayAdapter adapter = new YourCustomArrayAdapter();
for(int i = 0; i < adapter.getCount(); i++)
System.out.println(String.format("String \"%s\" has an index of %d", adapter.getItem(i), i);
这不使用方法getPosition()
因为我们的循环向我们提供了我们要获得商品的位置。
你可以这样做
Toast.makeText(getApplicationContext, "The position of the clicked item is " + position, Toast.LENGTH_SHORT).show();
在将要实现的listview onItemClickListener()
中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.