0

Я сделал расширение с помощью textView и переключился в дочернюю группу. Я хочу использовать статус переключателя (Вкл. Или Выкл.) Для управления устройством, подключенным к модулю WiFi ESP8266. Как сохранить данные коммутатора, чтобы использовать его где-то еще?Android Studio добавляет «Switch» в дочернюю группу ExpandableListView

адаптер Java файл:

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; 
    } 

} 

enter image description here

+0

пожалуйста, посмотрите на это руководство .. http://developer.android.com/guide/topics/data /data-storage.html –

ответ

1

Вы должны сначала зарегистрироваться switch идентификатор в getChildView() из вашего activity_listview_childxml файла. Предположим, ваш switch идентификатор в xml файле switchChild затем используйте следующий код:

 @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; 
     } 

надеюсь, что это поможет вам

+0

Благодарим за помощь! Хм .. Можно ли установить разные имена для переключателей в дочерней группе? Я хочу сделать каждый переключатель, чтобы сделать другое поведение. –

+0

да .... вы можете сделать. Вы можете установить различные функции для каждого 'view' в соответствии с вашими требованиями. –

+0

Я имею в виду, могу ли я использовать отдельные ключи в mainActivity не в файле адаптера? Сложно добавить все коды в файл адаптера :( –