Android开发 - 是否可以将ListView转换回ArrayList?

时间:2014-10-21 09:36:31

标签: java android listview android-listview arraylist

我遇到了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;
            }});
    }
}

2 个答案:

答案 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>