0

我有一个问题。我列了一个清单如下:

List<Map<String, String>> ShopsList = new ArrayList<Map<String,String>>();
       private void initList() {
        // We add the cities
           ShopsList.add(createShop("Antwerpen", "Broer Bretel"));
           ShopsList.add(createShop("Antwerpen", "Caffènation"));
           ShopsList.add(createShop("Antwerpen", "Caffènation - Take Out Nation"));
           ShopsList.add(createShop("Antwerpen", "Coffeelabs"));
           ShopsList.add(createShop("Antwerpen", "De Dikke Kat"));
           ShopsList.add(createShop("Antwerpen", "Mlle Loustache")); 
           ShopsList.add(createShop("Berchem", "Broer Bretel"));
           ShopsList.add(createShop("Berchem", "Caffènation"));
           ShopsList.add(createShop("Berchem", "Caffènation - Take Out Nation"));

private HashMap<String, String> createShop(String key, String name) {
        HashMap<String, String> shop = new HashMap<String, String>();
        shop.put(key, name);
        return shop;
       }

所以现在我使用 SimpleAdapter 在 Listview 中显示这个列表。但我想要的是能够只显示具有特定关键字的列表中的数据。所以我愿意

ListView lv = (ListView) findViewById(R.id.listView);

        SimpleAdapter simpleAdpt = new SimpleAdapter(this, ShopsList, android.R.layout.simple_list_item_1,
                new String[] {"Antwerpen"}, new int[] {android.R.id.text1});

        lv.setAdapter(simpleAdpt);

当我这样做时,他只向我显示带有正确关键字的数据,但将其他条目添加为空。因此,当我要求第二个关键字时,他首先添加了 6 个空白位置,然后才显示正确的条目。

我该怎么做?我想我应该使用 Wanted 关键字添加条目的位置,但是如何以简单的方式检索这些位置?

谢谢!

4

1 回答 1

0

编辑:

正如有人指出的那样,我将 SimpleAdapter 误认为是 ArrayAdapter。抱歉,如果您想将实现更改为 ArrayAdapter(恕我直言,这更简单),代码如下。

原来的:

android.R.id.text1用值填充时,ArrayAdapter只需调用.toString()列表中的每个元素。

有几种方法可以实现您想要的。

  • 其中之一是制作 aList<String>Strings按照您希望在屏幕上看到的那样制作。

  • 一种更有效的“OO”方法是创建自己的类。

例如:

public class Shop{
   private String city;
   private String name;

   public Shop(String city, String name){
       this.city = city;
       this.name = name;
   }

   @Override
   public String toString() {
       return city + " - " + name
   }
}

然后在您的适配器上,您将使用 aList<Shop>而不是地图。并通过覆盖该toString()方法,您可以根据需要操作文本。

  • 顺便提一下,另一种方法可能是扩展 ListAdapter 类
于 2013-04-05T14:02:10.237 回答