简体   繁体   中英

Cannot Populate listView with ArrayList<HashMap<String,?>>>


ArrayList<HashMap<String, ?>>  list;
f(!list.isEmpty()){

          adapter = new MySimpleArrayAdapter(getActivity(),R.layout.inner_base_header_cutom, list);
          listview.setAdapter(adapter);
          Log.i("LIST Active", "LIST Active" + list.size());
      }

public class MySimpleArrayAdapter extends ArrayAdapter<ArrayList<HashMap<String, ?>>> {
          private final Context context;
          private final ArrayList<HashMap<String, ?>> values;

          public MySimpleArrayAdapter(Context context, int innerBaseHeaderCutom, ArrayList<HashMap<String, ?>> list) {
            super(context, innerBaseHeaderCutom, list);
            this.context = context;
            this.values = list;
          }

}


ERROR:

The constructor ArrayAdapter<ArrayList<HashMap<String,?>>>(Context, int, ArrayList<HashMap<String,?>>) is undefined

Also Cannot Remove ListView:

remove(list.get(position));

Error:

The method remove(ArrayList<HashMap<String,?>>) in the type ArrayAdapter<ArrayList<HashMap<String,?>>> is not applicable for the arguments (HashMap<String,capture#2-of ?>)

Just strip the last argument when you call the constructor of the super class

super(context, innerBaseHeaderCutom);

EDIT:
Another think you can try is changing this:

public class MySimpleArrayAdapter extends ArrayAdapter<ArrayList<HashMap<String, ?>>> {

for

public class MySimpleArrayAdapter extends ArrayAdapter<HashMap<String, ?>> {

And do the same change in the constructor.

You are creating ArrayList with ArrayList<HashMap<String, ?>> instead you can try ArrayList<HashMap<String, ? extends Object>>

Check the sample code and output.

public class MyJavaTesting{
public MyJavaTesting(ArrayList<HashMap<String, ? extends Object>> list) {
    System.out.println(list);
}

public static void main(String[] args) {
    ArrayList<HashMap<String, ? extends Object>> list = new ArrayList<HashMap<String,?>>();
    HashMap<String, String> map1 = new HashMap<String, String>();
    map1.put("Key", "value");
    list.add(map1);

    HashMap<String, Object> map2 = new HashMap<String, Object>();
    map2.put("Key", new Object());
    list.add(map2);

    MyJavaTesting manager = new MyJavaTesting(list);
}
}

Output: [{Key=value}, {Key=java.lang.Object@4f1d0d}]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM