【问题标题】:Show Variable from List in ListView在 ListView 中显示列表中的变量
【发布时间】:2012-06-07 15:17:42
【问题描述】:

我有一个位置列表

ArrayList<Location> locationList;

每个位置都包含名称、地址、描述等信息... 我只想在每一行中显示名称,以便您可以选择要在新意图中接收更多信息的位置。

我设法使用以下代码在 ListView 中显示字符串:

    locationNames= new String[]{"I","am", "a", "ListView"};

    setListAdapter(new ArrayAdapter<String>(this, R.layout.singleitem,
            locationNames));
    ListView locationListview;
    locationListview = getListView();
    locationListview.setTextFilterEnabled(true);

到目前为止,这有效,但我无法在此 listView 中显示列表的内容,也无法询问有关单击行的更多信息。

我考虑读取列表的第一个元素以将它们保存在字符串数组中。 当您想要单击它们以获取更多信息时,这会导致问题。

最好的方法是什么?

真诚地, 沃尔芬

【问题讨论】:

  • 您如何获得(或构建)locationList?有内置的适配器(如用于光标的 SimpleCursorAdapter)可以快速完成这项工作,或者您可以编写自定义适配器。

标签: android list listview arraylist


【解决方案1】:

我不确定这是您要求的。

将位置的名称放在一个字符串数组中,如下所示:

String names[] = new String[locationList.size()];

int i=0;
for( Location loc:locationList )
{
    names[i] = loc.name;
    i++;
}

然后在您的适配器中使用这个数组names 而不是locationNames

setListAdapter(new ArrayAdapter<String>(this, R.layout.singleitem, names));

最后为你的列表设置一个监听器以获取项目点击事件:

    locationListview.setOnItemClickListener( new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
        {
            // Read your location information using the position parameter
            Location l = locationList.get( position );

            // Show the rest of the location info ...

        }               
    });

【讨论】:

    【解决方案2】:

    类似这样的:

    Location[] locationArray = new Location[locationList.size()];
    locationList.toArray(locationArray); 
    setListAdapter(new ArrayAdapter<Location>(this, R.layout.singleitem,
    locationArray));
    

    并覆盖 Location 的 toString() 方法以返回位置的名称。如果您没有自己创建 Location 类,则需要创建一个子类来覆盖 toString() 方法。

    【讨论】:

    • 如果您创建一个新的ArrayAdapter&lt;Location&gt; 并将一个数组作为其第三个参数传递给它,则数组类型必须是Location。您正在传递它locationArray,您已将其声明为String[]。此外,要覆盖LocationtoString() 方法,您需要创建一个扩展Location 的类(您还没有解释)。
    猜你喜欢
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多