У меня есть адаптер просмотра списка, который многократно используется для некоторых действий и отображает различные макеты на основе разных элементов группы. Поскольку представление списка адаптер требует гибкости в структуре сбора, я решил использовать дженериков подстановочные для коллекции:Могу ли я передать список <Model> функции, которая принимает общий подстановочный список. <?>
public ExpandableListAdapter(FragmentActivity context, List<String> group,
Map<String, List<?>> listCollection) {
this.context = context;
this.dataCollections = listCollection;
}
Вот проблема. У меня есть функция, которая возвращает двухуровневый ассоциативный массив для адаптера. Он возвращает Map<String, List<Model>>
. Модель - модель отображения.
public Map<String, List<Model>> getAll() {
Map<String, List<Model>> listCollection = new HashMap<String,List<Model>>();
/***Database Query***/
List<Model> rowList = new ArrayList<Model>();
try {
if (cursor.moveToFirst()) {
do {
Model sf = new Model();
sf.title = cursor.getString(cursor.getColumnIndex("title");
sf.group_title = DBMethod.getString(cursor,getColumnIndex("group"));
rowList.add(sf);
Model group = (Model)listCollection.get(sf.group_title);
if(group == null){
listCollection.put(sf.group_title,rowList);
}else{
listCollection.get(sf.group_title).add(sf);
}
} while(cursor.moveToNext());
}
} catch (Exception e) {
Log.d(TAG, "Error while trying to get posts from database");
} finally {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
}
return listCollection;
}
public class Model{
public String title;
public String value;
public String group_title;
}
Я понимаю, что возвращаемый массив из getAll()
(Map<String, List<Model>>
) не соответствует коллекции подстановочной требуемой ExpandableListAdapter
(Map<String, List<?>>
). Но все же можно передать его в адаптер? Я получаю несовместимые типы ошибок в этом коде:
Map<String, List<Model>> listCollection = getAll();
ExpandableListView expListView = (ExpandableListView) findViewById(R.id.left_drawer);
final ExpandableListAdapter expListAdapter = new ExpandableListAdapter(
this, groupList, listenCollection);
^^^^^^^^^^^
expListView.setAdapter(expListAdapter);
Я попытался изменить getAll()
вернуть Map<String, List<? extends Model>>
, но по-прежнему получать несовместимый тип ошибки.
Вы пытались «Карта> '? –