2017-09-21 2 views
1

Ich kenne ähnliche Frage vor, aber sie können mein Problem nicht lösen.Get Checkbox-Wert von expandableview

Ich erstelle eine check box expandable view, deren Daten von einigen Api stammen. Jetzt möchte ich alle ausgewählten Kontrollkästchen Wert in meiner Aktivität.

Nun bekomme ich alle Werte (ich verweise eine andere Frage Expandable check box) und ich habe diesen Wert als Rückgabe ([Pair{4 4}, Pair{3 3}, Pair{0 0}, Pair{3 6}, Pair{1 5}, Pair{3 7}, Pair{4 3}, Pair{3 4}, Pair{1 6}, Pair{4 2}, Pair{3 5}]). Wie könnte ich nun Wert von diesem Wert bekommen?

private final Set<Pair<Long, Long>> mCheckedItems = new HashSet<Pair<Long, Long>>(); 

Und

public View getChildView(final 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.expandable_group_child, null); 
    } 

    TextView txtListChild = (TextView) convertView 
      .findViewById(R.id.expandableChild); 

    final CheckBox cb = (CheckBox) convertView.findViewById(R.id.childCkBox); 
    // add tag to remember groupId/childId 
    final Pair<Long, Long> tag = new Pair<Long, Long>(
      getGroupId(groupPosition), 
      getChildId(groupPosition, childPosition)); 

    cb.setTag(tag); 
    // set checked if groupId/childId in checked items 
    cb.setChecked(mCheckedItems.contains(tag)); 
    // set OnClickListener to handle checked switches 
    cb.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      final CheckBox cb = (CheckBox) v; 
      final Pair<Long, Long> tag = (Pair<Long, Long>) v.getTag(); 
      if (cb.isChecked()) { 
       mCheckedItems.add(tag); 
       //mCheckBoxData.put(getGroupId(groupPosition), 
         getChildId(groupPosition, childPosition)); 
      } else { 
       mCheckedItems.remove(tag); 
       //mCheckBoxData.remove(getGroupId(groupPosition),getChildId(groupPosition, childPosition)); 
      } 
     } 
    }); 

    txtListChild.setText(childText); 
    return convertView; 
} 

in Activity ->

private Set<Pair<Long, Long>> mCheckedItems = new HashSet<Pair<Long, Long>>(); 
    mCheckedItems = listAdapter.getCheckedItems(); 
    System.out.println(mCheckedItems); 

Ich weiß jetzt, wie die Daten aus dieser Art retrive. Jeder Vorschlag und jede Bearbeitung ist willkommen.

Edit: Ich habe mehrere Gruppen und alle Daten kommen durch Api.

+0

Sie Schnittstelle für das verwenden können .. – gaurang

+0

@gaurang Wie das verwenden ... .. – Vivek

Antwort

2

versuchen diese

Schnittstelle AdapterCallback.java erstellen

interface AdapterCallback { 
    void onMethodCallback(int pos, String name); 
} 

in Ihrem Adapter

private AdapterCallback mAdapterCallback; 
//constructor 
public Adapter(Context context, ArrayList<DataClass> arrayList, AdapterCallback callback) { 
     this.context = context; 
     this.arrayList = arrayList; 
     this.mAdapterCallback = callback; 
    } 

in Ihrem get Ansicht Methodenaufruf, wo Sie aktivieren/deaktivieren Checkbox

mAdapterCallback.onMethodCallback(rowItem.getPos(), rowItem.getName()); 

in Ihrer Aktivität implementieren Schnittstelle wie diese

public class MainActivity extends AppCompatActivity implements AdapterCallback 

und Ihre Interface-Methode außer Kraft setzen, um Ihre Aktivität wie dieses

@Override 
    public void onMethodCallback(int pos, String name) { 
     Log.d("interface", "calling"); 
     Log.d("pos", ""+pos); 
     Log.d("name", name); 

    } 
+0

Ich werde das versuchen. Aber ich bekomme Wert von Adapter, aber ich kann diesen Wert nicht abrufen. Könntest du mich raushauen? '[Paar {4 4}, Paar {3 3}, Paar {0 0}, Paar {3 6}, Paar {1 5}, Paar {3 7}, Paar {4 3}, Paar {3 4}, Pair {1 6}, Pair {4 2}, Pair {3 5}] ' – Vivek

+0

differenzieren Sie dieses Paar von Ihrem Adapter und senden Sie die Daten (die Sie in Ihrer Aktivität wollen) an die Aktivität mit Hilfe der Schnittstelle – gaurang

+0

ich habe anders Gruppen in erweiterbarer Ansicht und alle Gruppen enthalten Kontrollkästchen. Also brauche ich Wert in Paar. – Vivek