0

我有一个位置列表

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 中显示列表的内容,也无法询问有关单击行的更多信息。

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

做这个的最好方式是什么?

真诚的,沃尔芬

4

2 回答 2

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 ...

        }               
    });
于 2012-06-02T22:28:08.887 回答
0

像这样的东西:

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

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

于 2012-06-03T00:01:27.417 回答