So I've just stepped in the territory of ExpandableListView
and wish to make a simple List with only one group and 3 children in a DrawerLayout
Here's my Adapter code :
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;
}
}
And here's my DrawerShopModel
public class DrawerShopModel {
public int drawer_image;
public String drawer_txt;
@Override
public String toString() {
return drawer_txt;
}
}
I simply follow MultiAutocompleteTextView
method to make the model.
And finally here's how I call it in the drawer :
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);
}
The list is not showing at all in the drawer. I feel off about the adapter, can anyone lead me to the right direction in this?