所以我刚刚进入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);
}
抽屉里根本没有显示清单。我对适配器感到不安,有人能引导我走向正确的方向吗?
答案 0 :(得分:0)
如果你试图在抽屉布局中获得可扩展列表,请尝试这种方式,这正是您所寻找的
public class CustomExpandableListAdapter extends BaseExpandableListAdapter {
private Context mContext;
private List<String> mExpandableListTitle;
private Map<String, List<String>> mExpandableListDetail;
private LayoutInflater mLayoutInflater;
public CustomExpandableListAdapter(Context context, List<String> expandableListTitle,
Map<String, List<String>> expandableListDetail) {
mContext = context;
mExpandableListTitle = expandableListTitle;
mExpandableListDetail = expandableListDetail;
mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public Object getChild(int listPosition, int expandedListPosition) {
return mExpandableListDetail.get(mExpandableListTitle.get(listPosition))
.get(expandedListPosition);
}
@Override
public long getChildId(int listPosition, int expandedListPosition) {
return expandedListPosition;
}
@Override
public View getChildView(int listPosition, final int expandedListPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String expandedListText = (String) getChild(listPosition, expandedListPosition);
if (convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.list_item, null);
}
TextView expandedListTextView = (TextView) convertView
.findViewById(R.id.expandedListItem);
expandedListTextView.setText(expandedListText);
return convertView;
}
@Override
public int getChildrenCount(int listPosition) {
return mExpandableListDetail.get(mExpandableListTitle.get(listPosition))
.size();
}
@Override
public Object getGroup(int listPosition) {
return mExpandableListTitle.get(listPosition);
}
@Override
public int getGroupCount() {
return mExpandableListTitle.size();
}
@Override
public long getGroupId(int listPosition) {
return listPosition;
}
@Override
public View getGroupView(int listPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String listTitle = (String) getGroup(listPosition);
if (convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.list_group, null);
}
TextView listTitleTextView = (TextView) convertView
.findViewById(R.id.listTitle);
listTitleTextView.setTypeface(null, Typeface.BOLD);
listTitleTextView.setText(listTitle);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int listPosition, int expandedListPosition) {
return true;
}
}
答案 1 :(得分:0)
您似乎正在做的一切正确但只是缺少在Adapter
ExpandableListView
在setupShop()
方法中,您必须设置Adapter
这样的
expandableListView.setAdapter(drawerShopAdapter);