I made expandablelistview with textView and switch in the child group. I want to use the status of switch(On or OFF) to control the device connected to the ESP8266 WiFi module. How can I store the switch data to use it somewhere else?
Adapter java file:
public class AdpMain extends BaseExpandableListAdapter {
private Context context;
private ArrayList<String> arrayGroup;
private HashMap<String, ArrayList<String>> arrayChild;
public AdpMain(Context context, ArrayList<String> arrayGroup, HashMap<String, ArrayList<String>> arrayChild)
{
super();
this.context = context;
this.arrayGroup = arrayGroup;
this.arrayChild = arrayChild;
}
...
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
{
String childName = arrayChild.get(arrayGroup.get(groupPosition)).get(childPosition);
View v = convertView;
if(v == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = (RelativeLayout)inflater.inflate(R.layout.activity_listview_child, null);
}
TextView textChild = (TextView)v.findViewById(R.id.textChild);
textChild.setText(childName);
return v;
}
}
You have to first register switch
id in getChildView()
from your activity_listview_child
xml
file. suppose your switch
id in xml
file is switchChild
then use following code :
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
{
ChildHolder childHolder;
String childName = arrayChild.get(arrayGroup.get(groupPosition)).get(childPosition);
if(convertView == null)
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.activity_listview_child, null);
childHolder = new ChildHolder();
childHolder.textChild = (TextView)convertCiew..findViewById(R.id.textChild);
childHolder.switchChild = (Switch)convertCiew..findViewById(R.id.switchChild);
converView.setTag(childHolder)
}
else
{
childHolder = (ChildHolder)convertView.getTag();
}
childHolder.textChild.setText(childName);
childHolder.switchChild.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
//whatever you want do for switch code here
mListener.OnSwitchClick(groupPosition, childPosition,childHolder.switchChild.isChecked());
}
});
return convertView;
}
private static class ChildHolder
{
TextView textChild;
Switch switchChild;
}
hope it helps you