What adapter shall I use to use HashMap in a ListView

后端 未结 6 1582
轮回少年
轮回少年 2020-11-27 04:42

I want to use HashMap for a list of items of Adapter for a ListView. I was going to use ArrayAdapter<> but I can\'t

6条回答
  •  无人及你
    2020-11-27 05:13

    In your adapter file

    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 map) {
                mData = new ArrayList();
                mData.addAll(map.entrySet());
            }
    
            @Override
            public int getCount() {
                return mData.size();
            }
    
            @Override
            public Map.Entry 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 item = getItem(position);
    
                // TODO replace findViewById by ViewHolder
                ((TextView) result.findViewById(R.id.text1)).setText(item.getKey());
                ((TextView) result.findViewById(R.id.text2)).setText(item.getValue());
    
                return result;
            }
        }
    

    Call this adapter

    public void showCinemas(HashMap cinemas) {
        MyAdapter adapter = new MyAdapter(cinemas);
        list.setAdapter(adapter);
    }
    

提交回复
热议问题