comment appeler notifyDataSetChanged personnalisé ExpandableListView?
je suis en train d'appeler notifyDataSetChanged pour mon custom ExpandableListView. ce qui arrive est de ma liste d'enfants, il affiche les fichiers dans le dossier sélectionné (liste des groupes). lorsque l'enfant est cliqué, il vous demandera si vous voulez supprimer un fichier ou pas. puis, après la suppression, le ExpandableList sera "actualiser". mais de toute façon, je ne pouvais pas appeler la notifyDataSetChanged méthode.
ma coutume adaptateur :
public class customListAdapter extends BaseExpandableListAdapter {
//Sample data set. children[i] contains the children (String[]) for groups[i].
private File mapFolder = new File (Environment.getExternalStorageDirectory(),"/MLT/A");
private File recordFolder = new File (Environment.getExternalStorageDirectory(),"/MLT/B");
private File scribbleFolder = new File (Environment.getExternalStorageDirectory(),"/MLT/C");
private String[] groups = { "A", "B", "C" };
private String[][] children = { mapFolder.list(), recordFolder.list(), scribbleFolder.list() };
public Object getChild(int groupPosition, int childPosition) {
return children[groupPosition][childPosition];
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public int getChildrenCount(int groupPosition) {
return children[groupPosition].length;
}
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
TextView textView = new TextView(MLT_File.this);
textView.setBackgroundColor(Color.BLACK);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
textView.setPadding(100, 5, 0, 5);
textView.setTextColor(Color.WHITE);
textView.setTextSize(23);
textView.setId(1000);
textView.setText(getChild(groupPosition, childPosition).toString());
return textView;
}//getChildView
public Object getGroup(int groupPosition) {
return groups[groupPosition];
}
public int getGroupCount() {
return groups.length;
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
ViewGroup parent) {
TextView textView = new TextView(MLT_File.this);
textView.setBackgroundColor(Color.WHITE);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
textView.setPadding(100, 0, 0, 0);
textView.setTextColor(Color.BLACK);
textView.setTextSize(25);
textView.setText(getGroup(groupPosition).toString());
return textView;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public boolean hasStableIds() {
return true;
}
public void notifyDataSetChanged() {
this.notifyDataSetChanged();
}
}//customListAdapter
mon onCreate :
//Set up our adapter
listAdapter = new customListAdapter();
expLV = (ExpandableListView) findViewById(R.id.mlt_expList);
expLV.setAdapter(listAdapter);
//registerForContextMenu(expLV);
expLV.setOnChildClickListener(new OnChildClickListener()
{
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id)
{
//TODO Auto-generated method stub
String parentName = "";
if (groupPosition == 0)
{
parentName = "A";
}
else if (groupPosition == 1)
{
parentName = "B";
}
else if (groupPosition == 2)
{
parentName = "C";
}
TextView childView = (TextView) v;
String childName = childView.getText().toString();
File file = new File(Environment.getExternalStorageDirectory(),"/Folder/"+childName);
file.delete();
return false;
}
});//OnChildClickListener
la notifyDataSetChanged() dans ma coutume est ce que j'ai essayé de le faire, car j'ai réalisé que je ExpandableList n'en a pas. mais encore, la méthode que j'ai créé n'apparaît pas lorsque j'appuie sur expLV.n ...
OriginalL'auteur Jovi | 2012-01-22
Vous devez vous connecter pour publier un commentaire.
En fait, il y a un
notifyDataSetChanged()
la fonctionBaseExpandableListAdapter
.Vous de ne rien accomplir avec:
merci de le supprimer.
appel
adapter.notifyDataSetChanged()
de votreonClick(View v)
dans votreOnItemClickListener
après la modification de votre jeu de données.Où avez-vous déclarer votre carte ? est-il une variable de classe? publier vos onClick méthode...
j'ai ajouté plus de détails =)
j'utilise votre code public void notifyDataSetChanged(){ this.notifyDataSetChanged(); } et j'ai eu un stackoverflowerror des idées?
Lire après le MAUVAIS exemple de code.
OriginalL'auteur Rotemmiz
bien... parce que personne n'avait vraiment m'a dit comment faire, j'ai pensé que peut-être stupide, mais utile.
ce que j'ai fait, plutôt que de la créer dans onCreate, je l'ai créé dans onResume(). quand je fais des changements, il sera créé à nouveau. la raison pour cela c'est parce que je suis en utilisant TabMenu et quand je switch entre eux, la classe de ne pas créer de nouveau et, par conséquent, provoquant la liste pour être dans le même état.
en utilisant onResume, il a également simplifier mon travail quand j'ai voulu actualiser, tout ce que j'ai à faire est d'appeler onResume().
espère que cela aidera d'autres personnes. =)
OriginalL'auteur Jovi