我遇到了ListViews和ArrayLists的问题。 我有一个项目的ArrayList。每个项目都有ID,Title,Price等信息。我还有另一个ArrayList的分配。这些分配包含一个“ItemId”变量 - 所以我打算将其链接到item。 (不使用数据库。)
这就是我认为我会这样做的方式。首先,我将使用AndroidStudio将项目的ArrayList转换为ListView。当用户点击此ListView上的特定项目时,我将运行if语句(例如,如果所选项目的Id为2,则显示该itemId的分配)
然而,这有一个问题。我无法检查此if语句中的Id,因为我的ArrayList已经转换为ListView,我无法搜索特定数据。任何人都可以帮助我吗?
这是我目前的代码:
public class ViewItems extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_items_layout);
ListAdapter itemAdapter = new ArrayAdapter<Item>(this, android.R.layout.simple_list_item_1, Item.itemArrayList);
ListView itemListView = (ListView) findViewById(R.id.itemListView);
itemListView.setAdapter(itemAdapter);
itemListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String itemPicked = ????;
IF STATEMENT GOES HERE;
}});
}
}
答案 0 :(得分:1)
使用getItem
ArrayAdapter
itemAdapter.getItem (i);
答案 1 :(得分:1)
你没有“转换”&#39;将ArrayList
改为ListView
。仅ListView
使用 ArrayList
来显示您的商品 - ArrayList
仍有效。
更准确地说,您将商品添加到使用您的确切ArrayAdapter
的{{1}}。您可以使用:
ArrayList
完整示例:
itemAdapter.getItem(i);
请注意,由于您在final ArrayAdapter<Item> itemAdapter = new ArrayAdapter<Item>(this, android.R.layout.simple_list_item_1, Item.itemArrayList);
ListView itemListView = (ListView) findViewById(R.id.itemListView);
itemListView.setAdapter(itemAdapter);
itemListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Item itemPicked = itemAdapter.getItem(i);
IF STATEMENT GOES HERE;
}
});
中放置Item
的实例,ArrayList
将返回itemAdapter.getItem(i)
,而不是Item
。< / p>