Last active
June 21, 2017 09:24
-
-
Save talhahasanzia/8a86a080f0c84f11ea41e1dc32e58ee6 to your computer and use it in GitHub Desktop.
Expandable List View boiler plate
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:orientation="horizontal" | |
android:layout_width="match_parent" | |
android:layout_height="40dp"> | |
<com.mujadidia.duaoazkar.customview.NotoTextView | |
android:id="@+id/text1" | |
android:paddingLeft="12dp" | |
android:textSize="20sp" | |
android:layout_width="0dp" | |
android:layout_height="match_parent" | |
android:text="CategoryName" | |
android:gravity="center_vertical" | |
android:layout_weight="1"/> | |
</LinearLayout> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ExpandableListAdapter extends BaseExpandableListAdapter | |
{ | |
private Context _context; | |
private List<String> _listDataHeader; // header titles | |
// child data in format of header title, child title | |
private HashMap<String, List<String>> _listDataChild; | |
public ExpandableListAdapter(Context context, List<String> listDataHeader, | |
HashMap<String, List<String>> listChildData) { | |
this._context = context; | |
this._listDataHeader = listDataHeader; | |
this._listDataChild = listChildData; | |
} | |
@Override | |
public Object getChild(int groupPosition, int childPosititon) { | |
return this._listDataChild.get(this._listDataHeader.get(groupPosition)) | |
.get(childPosititon); | |
} | |
@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.drop_down_list_item, null); | |
} | |
TextView txtListChild = (TextView) convertView | |
.findViewById(R.id.text1); | |
txtListChild.setText(childText); | |
return convertView; | |
} | |
@Override | |
public int getChildrenCount(int groupPosition) { | |
return this._listDataChild.get(this._listDataHeader.get(groupPosition)) | |
.size(); | |
} | |
@Override | |
public Object getGroup(int groupPosition) { | |
return this._listDataHeader.get(groupPosition); | |
} | |
@Override | |
public int getGroupCount() { | |
return this._listDataHeader.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.list_group_header, null); | |
} | |
TextView lblListHeader = (TextView) convertView | |
.findViewById(R.id.list_header); | |
lblListHeader.setTypeface(null, Typeface.BOLD); | |
lblListHeader.setText(headerTitle); | |
return convertView; | |
} | |
@Override | |
public boolean hasStableIds() { | |
return false; | |
} | |
@Override | |
public boolean isChildSelectable(int groupPosition, int childPosition) { | |
return true; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:orientation="vertical"> | |
<TextView | |
android:textColor="?colorPrimary" | |
android:id="@+id/list_header" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:padding="10dp" | |
android:text="SubCategory" | |
android:textSize="20sp"/> | |
</LinearLayout> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MainActivity extends Activity { | |
ExpandableListAdapter listAdapter; | |
ExpandableListView expListView; | |
List<String> listDataHeader; | |
HashMap<String, List<String>> listDataChild; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
// get the listview | |
expListView = (ExpandableListView) findViewById(R.id.lvExp); | |
// preparing list data | |
prepareListData(); | |
listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild); | |
// setting list adapter | |
expListView.setAdapter(listAdapter); | |
} | |
/* | |
* Preparing the list data | |
*/ | |
private void prepareListData() { | |
listDataHeader = new ArrayList<String>(); | |
listDataChild = new HashMap<String, List<String>>(); | |
// Adding child data | |
listDataHeader.add("Top 250"); | |
listDataHeader.add("Now Showing"); | |
listDataHeader.add("Coming Soon.."); | |
// Adding child data | |
List<String> top250 = new ArrayList<String>(); | |
top250.add("The Shawshank Redemption"); | |
top250.add("The Godfather"); | |
top250.add("The Godfather: Part II"); | |
top250.add("Pulp Fiction"); | |
top250.add("The Good, the Bad and the Ugly"); | |
top250.add("The Dark Knight"); | |
top250.add("12 Angry Men"); | |
List<String> nowShowing = new ArrayList<String>(); | |
nowShowing.add("The Conjuring"); | |
nowShowing.add("Despicable Me 2"); | |
nowShowing.add("Turbo"); | |
nowShowing.add("Grown Ups 2"); | |
nowShowing.add("Red 2"); | |
nowShowing.add("The Wolverine"); | |
List<String> comingSoon = new ArrayList<String>(); | |
comingSoon.add("2 Guns"); | |
comingSoon.add("The Smurfs 2"); | |
comingSoon.add("The Spectacular Now"); | |
comingSoon.add("The Canyons"); | |
comingSoon.add("Europa Report"); | |
listDataChild.put(listDataHeader.get(0), top250); // Header, Child data | |
listDataChild.put(listDataHeader.get(1), nowShowing); | |
listDataChild.put(listDataHeader.get(2), comingSoon); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment