本文介绍了HashMap来的ListView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的HashMap,我怎样才能把它的ListView?哪个适配器需要使用?
公共无效showCinemas(HashMap的<字符串,字符串>电影院)
{
...//什么?
list.setAdapter(适配器);
}
解决方案
请简单的适配器类:
MyAdapter.java
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.BaseAdapter;
进口android.widget.TextView;
进口的java.util.ArrayList;
进口的java.util.Map;
公共类MyAdapter扩展了BaseAdapter {
私人最终的ArrayList MDATA;
公共MyAdapter(地图<字符串,字符串>地图){
MDATA =新的ArrayList();
mData.addAll(map.entrySet());
}
@覆盖
公众诠释getCount将(){
返回mData.size();
}
@覆盖
公共Map.Entry的<字符串,字符串>的getItem(INT位置){
返程(Map.Entry的)mData.get(位置);
}
@覆盖
众长getItemId(INT位置){
// TODO实现你自己的逻辑与ID
返回0;
}
@覆盖
公共查看getView(INT位置,查看convertView,ViewGroup中父){
最后查看的结果;
如果(convertView == NULL){
结果= LayoutInflater.from(parent.getContext())膨胀(R.layout.my_adapter_item,父母,假)。
} 其他 {
结果= convertView;
}
Map.Entry的<字符串,字符串>项目=的getItem(位置);
// TODO取代findViewById由ViewHolder
((TextView的)result.findViewById(android.R.id.text1))的setText(item.getKey());
((TextView的)result.findViewById(android.R.id.text2))的setText(item.getValue());
返回结果;
}
}
布局/ my_adapter_item.xml
< XML版本=1.0编码=UTF-8&GT?;
<的LinearLayout
的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:方向=垂直
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
>
<的TextView
机器人:ID =@机器人:ID / text1中
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
/>
<的TextView
机器人:ID =@机器人:ID /文本2
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
/>
< / LinearLayout中>
您code:
公共无效showCinemas(HashMap的<字符串,字符串>电影院){
MyAdapter适配器=新MyAdapter(电影院);
list.setAdapter(适配器);
}
I have HashMap, how can I to put it in ListView? Which adapter need to use?
public void showCinemas(HashMap<String, String> cinemas)
{
...//What?
list.setAdapter(adapter);
}
解决方案
Make simple adapter class:
MyAdapter.java
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Map;
public class MyAdapter extends BaseAdapter {
private final ArrayList mData;
public MyAdapter(Map<String, String> map) {
mData = new ArrayList();
mData.addAll(map.entrySet());
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Map.Entry<String, String> getItem(int position) {
return (Map.Entry) mData.get(position);
}
@Override
public long getItemId(int position) {
// TODO implement you own logic with ID
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View result;
if (convertView == null) {
result = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_adapter_item, parent, false);
} else {
result = convertView;
}
Map.Entry<String, String> item = getItem(position);
// TODO replace findViewById by ViewHolder
((TextView) result.findViewById(android.R.id.text1)).setText(item.getKey());
((TextView) result.findViewById(android.R.id.text2)).setText(item.getValue());
return result;
}
}
layout/my_adapter_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@android:id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
Your code:
public void showCinemas(HashMap<String, String> cinemas) {
MyAdapter adapter = new MyAdapter(cinemas);
list.setAdapter(adapter);
}
这篇关于HashMap来的ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!