Hello. I have a Map in which the headers (key) and references (value) are stored, how can I transfer them to the View ? as I understand ArrayAdapter does not fit.

 private void printFavoritesList() { list = (ListView) findViewById(R.id.listView); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.article, favoritesList); } 

    1 answer 1

    Create an adapter:

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

    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" /> 

    Activity:

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