2013-10-28 29 views
1

我是Android编程的初学者,对于这个简单的任务我有很大的麻烦。将Hashmap数组添加到列表视图

我有一个ArrayList的:

ArrayList<HashMap<String, String>> tableList = new ArrayList<HashMap<String, String>>(); 

我想每个键/值对添加到ListView。

如何将它们添加到ListView?我已经看到无数在线使用适配器的解释,但它们都使用我一无所知的变量。

回答

2

构建自己的适配器类:

public class MyAdapter extends BaseAdapter { 

    private Activity activity; 
    private HashMap<String, String> map; 

    public MyAdapter(Activity activity, HashMap<String, String> map) { 
     this.activity = activity; 
     this.map = map; 
    } 

    public int getCount() { 
     return map.size(); 
    }  

    public View getView(final int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) activity 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.my_list_item, 
        null); 
     } 

      // Recommended to use a list as the dataset passed in the constructor. 
      // Otherwise not sure how you going to map a position to an index in the dataset. 
      String key = // get a key from the HashMap above 
      String value = map.get(key); 

      TextView keyView = convertView.findViewById(R.id.item_key); 
      keyView.setText(key); 

      TextView valueView = convertView.findViewById(R.id.item_value); 
      valueView .setText(value); 

     return convertView; 
    }  
} 

然后,把它传递到您的ListView setAdapter方法:

MyAdapter myAdapter = new MyAdapter(this, map); 
ListView listview = (ListView) findViewById(R.id.listview); 
listview.setAdapter(myAdapter); 

样品布局/ my_list_item.xml:

<LinearLayout xmlns:android:http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
> 

    <TextView 
     android:id="@+id/item_key" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    /> 

    <TextView 
     android:id="@+id/item_value" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    /> 
</LinearLayout> 
+0

什么为R .layout.my_list_item?我只有一个列表视图。 –

+0

我也不确定如何用我的物品填充视图。 –

+0

您可以创建自己的自定义布局,以获得行想要的样子。这是R.layout.my_list_item。 –