我刚刚接触到了ExpandableListView
领域,希望在DrawerLayout
中创建一个仅包含一个组和三个子项的简单列表。
这是我的适配器代码:
public class DrawerShopAdapter extends BaseExpandableListAdapter {
private Context context;
private List<String> headerTitle = new ArrayList<>();
private List<DrawerShopModel> drawerList = new ArrayList<>();
public DrawerShopAdapter(Context context, List<DrawerShopModel> dataset) {
this.context = context;
this.drawerList.addAll(dataset);
this.headerTitle.add("Toko Saya");
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this.drawerList.get(childPosititon).drawer_txt;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.drawer_shop_item, null);
}
ImageView drawerIcon = (ImageView)convertView.findViewById(R.id.drawer_shop_item_img);
OpenSansFont drawerTxt = (OpenSansFont) convertView.findViewById(R.id.drawer_shop_item_txt);
drawerIcon.setImageDrawable(context.getResources().getDrawable(drawerList.get(childPosition).drawer_image));
drawerTxt.setText(childText);
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return this.drawerList.size();
}
@Override
public Object getGroup(int groupPosition) {
return this.headerTitle.get(groupPosition);
}
@Override
public int getGroupCount() {
return this.drawerList.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.drawer_shop_header, null);
}
OpenSansFont listHeader = (OpenSansFont) convertView
.findViewById(R.id.drawer_shop_header_title);
// listHeader.setTypeface(null, Typeface.BOLD);
listHeader.setText(headerTitle);
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
下面是我的DrawerShopModel
:
public class DrawerShopModel {
public int drawer_image;
public String drawer_txt;
@Override
public String toString() {
return drawer_txt;
}
}
我只是遵循MultiAutocompleteTextView
方法来创建模型。
最后这是我在抽屉里调用它的方式:
public void setupShop(){
expandableListView.setVisibility(View.VISIBLE);
int images[] = { R.drawable.penjualan_gray, R.drawable.daftar_produk, R.drawable.keluhan_gray };
String[] names = { "Penjualan", "Daftar Produk", "Keluhan"};
List<DrawerShopModel> drawerShopModels = new ArrayList<>();
for (int i = 0; i < 3; i++){
DrawerShopModel drawerShopModel = new DrawerShopModel();
drawerShopModel.drawer_image = images[i];
drawerShopModel.drawer_txt = names[i];
drawerShopModels.add(drawerShopModel);
}
drawerShopAdapter = new DrawerShopAdapter(this.getActivity(), drawerShopModels);
expandableListView.setAdapter(drawerShopAdapter);
}
抽屉里根本没有显示列表。我对适配器感到困惑,有人能引导我走向正确的方向吗?
Map<String,List<DrawerShopModel>>
是必需的吗? - Kevin MurvieMap
来处理列表对吧??不相关的话题:顺便说一下,我喜欢POJO
这个名字,POJO JOJO 哈哈哈 - Kevin Murvie