Ich entschuldige mich für mein Englisch. Ich versuche, eine Anwendung zu schreiben, die Kontrollkästchen in ExpandableListView verwenden, aber wenn ich auf eine Elementliste klicke, überprüfte die Liste das angeklickte Element und nachfolgende Elemente mit Punkt 6. Wenn ich zum Beispiel auf das erste Element klicke, werden zusätzlich zu der erste, der sechste der zwölfte etc. etc. Unten ist mein CodeExpandablelistview android mit checkbox on onclick Weitere Artikel auswählen
prepareListData();
expandableListView = (ExpandableListView)findViewById(R.id.expandableListViewProfessioni);
expandableListAdapterProfessioni = new ExpandableListAdapterProfessioni(this,listDataHeader,listDataProfessioni);
expandableListView.setAdapter(expandableListAdapterProfessioni);
expandableListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
setListViewHeight(parent, groupPosition);
return false;
}
});
expandableListView.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
return false;
}
});private void prepareListData() {
listDataHeader = new ArrayList<String>();
listDataProfessioni = new HashMap<String, ArrayList<Mestieri>>();
listDataHeader.add("Professione svolta");
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Gson gson = new Gson();
String json = sharedPrefs.getString("HomeActivity", null);
Type type = new TypeToken<ArrayList<Mestieri>>() {}.getType();
ArrayList<Mestieri> professioni = gson.fromJson(json, type);
listDataProfessioni.put(listDataHeader.get(0), professioni);
}
private void setListViewHeight(ExpandableListView listView,
int group) {
ExpandableListAdapter listAdapter = (ExpandableListAdapter) listView.getExpandableListAdapter();
int totalHeight = 0;
int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(),
View.MeasureSpec.EXACTLY);
for (int i = 0; i < listAdapter.getGroupCount(); i++) {
View groupItem = listAdapter.getGroupView(i, false, null, listView);
groupItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
totalHeight += groupItem.getMeasuredHeight();
if (((listView.isGroupExpanded(i)) && (i != group))
|| ((!listView.isGroupExpanded(i)) && (i == group))) {
for (int j = 0; j < listAdapter.getChildrenCount(i); j++) {
View listItem = listAdapter.getChildView(i, j, false, null,
listView);
listItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
totalHeight = 700;
}
}
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
int height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getGroupCount() - 1));
if (height < 10)
height = 200;
params.height = height;
listView.setLayoutParams(params);
listView.requestLayout();
}/**************** ADAPTER *******************/public class ExpandableListAdapterProfessioni extends BaseExpandableListAdapter{
private Context _context;
private List<String> _listDataHeader;
public static ArrayList<String> listaProfessioni;
private HashMap<String, ArrayList<Mestieri>> _listDataChild;
public ExpandableListAdapterProfessioni(Context context, List<String> listDataHeader,
HashMap<String, ArrayList<Mestieri>> 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).getNome();
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
listaProfessioni = new ArrayList<String>();
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.expandable_listview_item_professioni, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.expandableListViewProfessioniItem);
txtListChild.setText(childText);
final CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.checkBoxItem);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(checkBox.isChecked()){
checkBox.setChecked(false);
}else {
checkBox.setChecked(true);
//listaProfessioni.add(getChild(groupPosition,childPosition).toString());
}
}
});
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.expandable_listview_professioni, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.expandableListViewProfessioniHeader);
lblListHeader.setTypeface(null, Typeface.NORMAL);
lblListHeader.setText(headerTitle);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}}