2012-02-03 61 views
3

我在地圖上一個HashMap得到HashMap中的值,並添加列表視圖

HashMap<String, Integer> map = new HashMap<String, Integer>(); 

有一定的價值。我想逐個獲取值並將其添加到列表視圖中。這是在圖中的值是

{意圖{CMP =藍牙/ 300} = 300,意圖{CMP =音頻/ 400} = 400, 意圖{CMP =視頻/ 500} = 500,意圖{ cmp = Display/100} = 100,Intent { cmp = WiFi/200} = 200}

在listview中有兩個textview。 我想在列表視圖中顯示爲

顯示100

無線網絡200

藍牙現在300

我公開我的適配器類別,這將是對你有所幫助。 ...

private class NewAdapter extends BaseAdapter { 

     public NewAdapter(IntentTestingActivity intentTestingActivity, 
       HashMap<String, Integer> map) { 
     } 

     @Override 
     public int getCount() { 
      Log.d(TAG, "Map size is: " + map.size()); 
      return map.size(); 
     } 

     @Override 
     public Object getItem(int arg0) { 
      return null; 
     } 

     @Override 
     public long getItemId(int arg0) { 
      return 0; 
     } 

     @Override 
     public View getView(int position, View view, ViewGroup parent) { 

      View v = view; 

      if (v == null) { 

       LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

       v = vi.inflate(R.layout.class_name, null); 

      } 

      TextView className = (TextView) v.findViewById(R.id.name); 
      TextView tagName = (TextView) v.findViewById(R.id.tag_name); 

      Integer key_name; 
      key_name = map.get(name); 

      Log.d(TAG, "Complete map is: " + map.toString()); 

      // String tag = map.get(tagName).toString(); 
      // Integer name = map.get(className); 

      String keyName; 
      keyName = map.toString(); 
      Log.d(TAG, "KeyName is: " + map.get(tag)); 

      for (int i = 0; i < map.size(); ++i) 
       Log.d(TAG, "Tag is: " + tag + " and Name is: " + name + " and Intent is: "+intent); 

      HashMap<String, Integer> hashmap = map; 
      for (Entry<String, Integer> e : hashmap.entrySet()) { 
       String key = e.getKey(); 
       int value = e.getValue(); 

       Set<String>keyname = map.keySet(); 

      Log.d(TAG, "Key: " + key+ " Value: "+value); 
      } 


      className.setText(name.toString()); 
//   tagName.setText(keyName); 
      return v; 
     } 

    } 

where nam e是一個String,其中包含所有keyValue,如Display,Vedio等。

Thanx提前...

+0

我不明白所有這些+1和收藏夾?我錯過了什麼:$? – 2012-02-03 09:09:53

回答

4

您可以創建消氣setter和集的POJO類這個班級的關鍵和價值。

 List<POJO> list = new ArrayList<POJO>(); 
     Iterator<Entry<String, Integer>> iterator = map.entrySet().iterator(); 
     Entry< String, Integer> entry; 
     while(iterator.hasNext()){ 
      POJO obj = new POJO(); 
      entry = iterator.next(); 
      Log.d("Key Value",entry.getKey()+" "+entry.getValue()); 
      obj.setKey(entry.getKey()); 
      obj.setValue(entry.getValue()); 
      list.add(obj); 
     } 

然後將此list設置爲您的Adapter類。這將是一個簡單的方法。

+0

我使allready一個自定義適配器。並在getview方法中寫了Integer key_name; \t key_name = map.get(name); className.setText(name。的toString()); 其中className是Textview。但在listView打印onle視頻。但我想打印所有的名字。在我寫的getview方法中使用 – 2012-02-03 09:45:02

+0

?你寫的是什麼?發佈代碼。 – 2012-02-03 09:46:12

+0

我提供了用我的customAdapter的getView方法編寫的代碼。 – 2012-02-03 09:50:17

0

建立使用您的HashMap和......自定義適配器

每當你想要做的處理,在一個ListView的看法,你 需要創建自定義適配器將處理您的邏輯 實施並根據需要將該信息傳遞給視圖。

0

好像你是顯示這兩個值加在一起作爲一個單一的字符串,所以你可以通過簡單地在做這種方式實現這一目標:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.id.text1); 
for(String key : map.keySet()){ 
    adapter.add(key + " " + map.get(key)); 
} 
yourListView.setAdapter(adapter); 
+1

OP有兩個文本瀏覽。 – 2012-02-03 09:21:19

+0

我想提供答案,因爲他將兩個元素都顯示爲一個字符串。否則,擴展到一個自定義適配器是他最好的選擇 – waqaslam 2012-02-03 09:29:02

+0

我已經打印在listView by customAdapter中。但在listView中只顯示Vedio。但我想打印地圖中的所有東西。在getview方法中編寫的代碼已在下面發表評論。 – 2012-02-03 09:56:20