2012-02-03 13 views
3

に追加私はいくつかの価値があるマップ内のHashMapハッシュマップから値を取得し、リストビュー

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

を持っています。私は値を1つずつ取得し、それをlistviewに追加したい。マップ内にある値である

{意図{CMP =ブルートゥース/ 300} = 300、インテント{CMP =オーディオ/ 400} = 400、 意図{CMP =ビデオ/ 500} = 500、インテント{ cmp = Display/100} = 100、Intent { cmp = WiFi/200} = 200}

リストビューには2つのテキストビューがあります。 は、と私は

表示100

のWiFi 200

Bluetoothは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; 
     } 

    } 

ここでnam eは、Display、VedioなどのすべてのkeyValueを保持する単なるStringです。あなたが作成する必要が リストビューで景色を眺めながら処理を行いたいときはいつでも

+0

これらの+1とお気に入りはすべてわかりませんか?私は何かを逃していますか?$? –

答えて

4

あなたがゲッターセッターとセットで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をアダプタクラスに設定します。これは簡単な方法です。

+0

私はすでにカスタムアダプターを作っています。 getviewメソッドではInteger key_nameを書きました。 \t key_name = map.get(name); className.setText(name。toString()); classNameはTextviewです。しかし、listViewのprint onle Video。しかし、私はすべての名前を印刷したい。私が書いたgetviewメソッドの –

+0

?何を書きましたか?コードを投稿してください。 –

+0

私は、私のcustomAdapterのgetViewメソッドに書き込むコードを提供します。 –

0

は、カスタムあなたのHashMapを使用してアダプタと...

を構築

事前にありがとう...ロジック の実装を処理し、その情報を必要に応じてビューに渡すカスタムアダプタ。

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には2つのテキストビューがあります。 –

+0

両方の要素を1つの文字列として表示しているので、私は答えを提供すると考えました。さもなければ、カスタムアダプターに拡張することが彼の最善の賭けです。 – waqaslam

+0

私は既にcustomAdapterによってlistViewで印刷します。しかし、listViewではVedioのみを表示します。しかし、私は地図にあるすべてのものを印刷したい。 getviewメソッドで記述されているコードは既にコメントの下に与えられています。 –

関連する問題