0

Ich versuchenotifyDataSetChanged für expandableview android

enter image description here

hier ist

public class MainActivity extends AppCompatActivity { 

ExpandableListView expandableListView; 
ExpandableListAdapter expandableListAdapter; 
List<String> expandableListTitle; 
HashMap<String, List<String>> expandableListDetail; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    expandableListView = (ExpandableListView) findViewById(R.id.expandableListView); 
    expandableListDetail = ExpandableListDataPump.getData(); 
    expandableListTitle = new ArrayList<String>(expandableListDetail.keySet()); 
    expandableListAdapter = new CustomExpandableListAdapter(this, expandableListTitle, expandableListDetail); 
    expandableListView.setAdapter(expandableListAdapter); 
    expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { 

     @Override 
     public void onGroupExpand(int groupPosition) { 
      Toast.makeText(getApplicationContext(), 
        expandableListTitle.get(groupPosition) + " List Expanded.", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    expandableListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() { 

     View.OnClickListener listener = new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       EditText edit = (EditText) findViewById(R.id.editText); 
       expandableListTitle.add(edit.getText().toString()); 
       edit.setText(""); 
       expandableListAdapter.notifyDataSetChanged(); 
      } 
     }; 

meinen Code jedoch wie in diesem Beispiel neue Daten in Array hinzufügen, auf dem notifyDataSetChanged(); es sagt, dass „Can not method'notifyDataSetChanged() aufgelöst, mit einem roten Textmarker auf sie

kann mir jemand sagen, was ich mit dem Code falsch gemacht haben und wie ich den Fehler beheben sollten Ihnen für Ihre Hilfe danken

? EDIT

Unten ist mein customexpandablelistadapter Klasse

public class CustomExpandableListAdapter extends BaseExpandableListAdapter { 

private Context context; 
private List<String> expandableListTitle; 
private HashMap<String, List<String>> expandableListDetail; 

public CustomExpandableListAdapter(Context context, List<String> expandableListTitle, 
            HashMap<String, List<String>> expandableListDetail) { 
    this.context = context; 
    this.expandableListTitle = expandableListTitle; 
    this.expandableListDetail = expandableListDetail; 
} 

@Override 
public Object getChild(int listPosition, int expandedListPosition) { 
    return this.expandableListDetail.get(this.expandableListTitle.get(listPosition)) 
      .get(expandedListPosition); 
} 

@Override 
public long getChildId(int listPosition, int expandedListPosition) { 
    return expandedListPosition; 
} 

@Override 
public View getChildView(int listPosition, final int expandedListPosition, 
         boolean isLastChild, View convertView, ViewGroup parent) { 
    final String expandedListText = (String) getChild(listPosition, expandedListPosition); 
    if (convertView == null) { 
     LayoutInflater layoutInflater = (LayoutInflater) this.context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.list_item, null); 
    } 
    TextView expandedListTextView = (TextView) convertView 
      .findViewById(R.id.expandedListItem); 
    expandedListTextView.setText(expandedListText); 
    return convertView; 
} 

@Override 
public int getChildrenCount(int listPosition) { 
    return this.expandableListDetail.get(this.expandableListTitle.get(listPosition)) 
      .size(); 
} 

@Override 
public Object getGroup(int listPosition) { 
    return this.expandableListTitle.get(listPosition); 
} 

@Override 
public int getGroupCount() { 
    return this.expandableListTitle.size(); 
} 

@Override 
public long getGroupId(int listPosition) { 
    return listPosition; 
} 

@Override 
public View getGroupView(int listPosition, boolean isExpanded, 
         View convertView, ViewGroup parent) { 
    String listTitle = (String) getGroup(listPosition); 
    if (convertView == null) { 
     LayoutInflater layoutInflater = (LayoutInflater) this.context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.list_group, null); 
    } 
    TextView listTitleTextView = (TextView) convertView 
      .findViewById(R.id.listTitle); 
    listTitleTextView.setTypeface(null, Typeface.BOLD); 
    listTitleTextView.setText(listTitle); 
    return convertView; 
} 

@Override 
public boolean hasStableIds() { 
    return false; 
} 

    @Override 
    public boolean isChildSelectable(int listPosition, int expandedListPosition) { 
     return true; 
    } 
} 

hier ist meine ExpandableListDataPump Klasse, wo ich die Array alle Daten setzen

public class ExpandableListDataPump { 
public static HashMap<String, List<String>> getData() { 
    HashMap<String, List<String>> expandableListDetail = new HashMap<String, List<String>>(); 

    List<String> student1 = new ArrayList<String>(); 
    student1.add("test"); 
    student1.add("test1"); 
    student1.add("test2"); 
    student1.add("test3"); 
    student1.add("test4"); 
    student1.add("test"); 

    List<String> student2 = new ArrayList<String>(); 
    student2.add("Brazil"); 
    student2.add("Spain"); 
    student2.add("Germany"); 
    student2.add("Netherlands"); 
    student2.add("Italy"); 

    List<String> student3 = new ArrayList<String>(); 
    student3.add("United States"); 
    student3.add("Spain"); 
    student3.add("Argentina"); 
    student3.add("France"); 
    student3.add("Russia"); 

    expandableListDetail.put("111", student1); 
    expandableListDetail.put("222", student2); 
    expandableListDetail.put("333", student3); 
    return expandableListDetail; 
} 

}

+0

kann u Post 'CustomExpandableListAdapter' Klasse –

+0

Zeigen Sie Ihre CustomExpandableListAdapter Klassencode – Vickyexpert

+0

hinzugefügt, danke – KopArtist

Antwort

0

Ihre CustomExpandableListAdapter erstrecken müssen BaseExpandableListAdapter

+0

ich habe öffentliche klasse CustomExpandableListAdapter erweitert BaseExpandableListAdapter {in meinem code – KopArtist

+0

ExpandableListAdapter erweiterbarListAdapter -> BaseExpandableListAdapter erweiterbarListAdapter – Hayk

1

ändern

ExpandableListAdapter expandableListAdapter;

zu

CustomExpandableListAdapter expandableListAdapter;

+0

danke ich habe nicht mehr den fehler, Die Daten aus Editiertext wurden jedoch nicht in die Array-Liste aufgenommen – KopArtist

Verwandte Themen