我有一个HashMap
HashMap<String, Integer> map = new HashMap<String, Integer>();
在地图中有一些价值。我希望逐个获取值并将其添加到listview中。地图中的值是
{Intent {cmp = Bluetooth / 300} = 300,Intent {cmp = Audio / 400} = 400, 意图{cmp = Video / 500} = 500,意图{cmp =显示/ 100} = 100,意图{ cmp = WiFi / 200} = 200}
列表视图中有两个textview。 我希望在listview中显示为
显示100
WiFi 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;
}
}
其中name是一个String,其中包含所有keyValue,例如Display,Vedio等。
提前完成了......
答案 0 :(得分:4)
您可以使用getter-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类。这将是一个简单的方法。
答案 1 :(得分:0)
构建一个使用HashMap和...
的自定义适配器每当你想用ListView中的视图进行处理时 需要创建一个可以处理逻辑的自定义适配器 实现并在必要时将该信息传递给视图。
答案 2 :(得分: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);