android expandablelistview ne pas développer ou de recevoir des événements de clic
Je ne peux pas pour la vie de me comprendre pourquoi ma ExpandableListView ne développe pas... j'ai utilisé du journal des états dans juste environ chaque écouteur de clics je peux trouver de la ExpandableListView et il ne ressemble pas à l'un d'eux appelé.
Je sais qu'il y a de nombreux posts sur ce sujet mais j'ai lu à travers eux tous et essayé beaucoup de choses et j'ai pas de chance, j'espère que je suis absent quelques petites erreurs qui sera facile à repérer pour quelqu'un d'autre.
Activité Principale:
public class ForumListActivity extends Activity {
private static ArrayList<Forum> forumList;
private static ArrayList<ArrayList<SubForum>> subForumList;
private ExpandableListView forumListView;
private ForumListAdapter forumListAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main_page);
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
forumListView = (ExpandableListView) this.findViewById(R.id.main_page_forum_list);
forumList = new ArrayList<Forum>();
subForumList = new ArrayList<ArrayList<SubForum>>();
setUpForums(this);
forumListAdapter = new ForumListAdapter(this, forumList, subForumList);
forumListView.setAdapter(forumListAdapter);
forumListView.setOnGroupExpandListener(new OnGroupExpandListener(){
@Override
public void onGroupExpand(int groupPosition) {
Log.d("onGroupExpand", "this works?");
for(int i=0; i<forumListAdapter.getGroupCount(); i++) {
if(i != groupPosition)
forumListView.collapseGroup(groupPosition);
}
}
});
forumListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
Log.d("onGroupClick:", "worked");
parent.expandGroup(groupPosition);
return true;
}
});
}
Remarque: la méthode setUpForums() prend juste du système de tableaux et de les placer dans forumList et subForumList
ListViewAdapter:
public class ForumListAdapter extends BaseExpandableListAdapter {
private ArrayList<Forum> groups;
private ArrayList<ArrayList<SubForum>> children;
private Context ctx;
public ForumListAdapter(Context ctx, ArrayList<Forum> groups, ArrayList<ArrayList<SubForum>> children) {
this.ctx = ctx;
this.groups = groups;
this.children = children;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return children.get(groupPosition).get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(ctx);
convertView = inflater.inflate(R.layout.forum_list_child_item_row, null);
}
SubForum currentSubForum = children.get(groupPosition).get(childPosition);
TextView name = (TextView)convertView.findViewById(R.id.child_row_forum_title);
TextView desc = (TextView)convertView.findViewById(R.id.child_row_forum_description);
if (name != null)
name.setText(currentSubForum.getName());
if (desc != null)
desc.setText(currentSubForum.getDescription());
convertView.setFocusableInTouchMode(true);
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return children.get(groupPosition).size();
}
@Override
public Object getGroup(int groupPosition) {
return groups.get(groupPosition);
}
@Override
public int getGroupCount() {
return groups.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null)
{
LayoutInflater inflater = LayoutInflater.from(ctx);
convertView = inflater.inflate(R.layout.forum_list_group_item_row, null);
}
Forum currentForum = (Forum) groups.get(groupPosition);
TextView name = (TextView) convertView.findViewById(R.id.group_item_forum_title);
//ImageView image = (ImageView) convertView.findViewById(R.id.group_item_expander_image);
if(name != null)
name.setText(currentForum.getName());
/*
if(image != null) {
int[][] group_state_sets = {{}, {android.R.attr.state_expanded}};
image.setVisibility(View.VISIBLE);
int stateSetIndex = (isExpanded ? 1 : 0) ;
Drawable drawable = image.getDrawable();
drawable.setState(group_state_sets[stateSetIndex]);
}
*/
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
Groupe Mise En Page:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/turquoise_gradient"
android:orientation="horizontal"
android:paddingTop="6dip"
android:paddingBottom="6dip"
android:paddingLeft="6dip" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/turquoise_gradient"
android:orientation="vertical"
android:padding="2dip" >
<TextView
android:id="@+id/group_item_forum_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|left"
android:gravity="left"
android:paddingLeft="5dip"
android:textColor="@color/white"
android:textSize="16dip" />
</LinearLayout>
<!--
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center|right">
<ImageView
android:id="@+id/group_item_expander_image"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/collapse_down" />
</LinearLayout> -->
</LinearLayout>
présentation des enfants:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/turquoise_gradient"
android:orientation="horizontal"
android:paddingTop="6dip"
android:paddingBottom="6dip"
android:paddingLeft="6dip" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="2dip"
android:background="@drawable/turquoise_gradient" >
<TextView
android:id="@+id/child_row_forum_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:layout_gravity="center_vertical"
android:paddingLeft="5dip"
android:textColor="@color/white"
android:maxLines="1"
android:textSize="11dip" />
<TextView
android:id="@+id/child_row_forum_description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:layout_gravity="center_vertical"
android:paddingLeft="15dip"
android:textColor="@color/white"
android:maxLines="2"
android:textSize="11dip" />
</LinearLayout>
</LinearLayout>
principal de mise en page:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black"
android:orientation="vertical" >
<ExpandableListView
android:id="@+id/main_page_forum_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black"
android:divider="@color/black"
android:dividerHeight="1dip"
android:clickable="true" />
</LinearLayout>
Toute aide que vous pouvez fournir est grandement apprécié!
essayer d'ajouter un peu de texte par défaut de la valeur à votre enfant de mise en page pour textviews
OriginalL'auteur Mitch Ware | 2012-06-13
Vous devez vous connecter pour publier un commentaire.
J'ai aussi rencontré de problème similaire comme vous. Après quelques jours d'enquête, j'ai trouvé que j'ai fait quelque chose de mal. Donc, je fixe qu'il fonctionne correctement en faisant de petits changements.
Regardons le corps de
boolean onGroupClick(...)
danssetOnGroupClickListener
. Vous avez retourné vrai qui signifie "le clic a été touché."Vous devriez return false si vous souhaitez développer. Donc je vous suggère de faire comme ceci :
dans
android.widget.ExpandableListView
classe, il y a une méthode nomméeboolean handleItemClick(View v, int position, long id)
qui est responsable de l'effondrement de groupes ou de passage sur le clic au bon enfant.si vous mettez en œuvre
onGroupClick
à return true, le code ci-dessous 8e ligne ne sera jamais exécutée. (c'est à dire, les groupes ne seront jamais effondrés, élargi)Espère que ma réponse vous a aidé 🙂 bonne chance!
merci pour ce!
OriginalL'auteur Joon Hong
Dans le cas où vous avez un widget sur votre élément de la liste, tel qu'un Bouton, vous pouvez avoir à ajouter
android:focusable="false"
. Le Bouton était de ne pas laisser mon élément de la liste à être cliqué. C'était le problème dans mon cas.Cela m'a aidé.
Il pourrait ne pas fonctionner si vous n'en xml. Bouton ajouter.setFocusable(false); en java.
OriginalL'auteur Teo Inke
Il y a probablement trois choses u besoin de vérifier,
2.essayez de la retirer si la condition vérifiez bien que vous utilisez la disposition inflaters
vous devez également passer
Viewgroup
iciOriginalL'auteur Rakshi
Assurez-vous que votre groupe personnalisé de mise en page n'a pas
android:textIsSelectable="false"
comme "vrai", si le texte textview est fixé à sélectionnable, le extensible listview permettrait d'élargir dans le pain d'épices mais pas dans jellybean et peut ne pas fonctionner dans ICS trop.OriginalL'auteur Tobio
Je sais que cela a déjà été répondu, mais essayez de définir la présentation de la base de ce que vous êtes gonflant d'avoir l'attribut:
OriginalL'auteur R Brown
Si votre extensible listview parent a ou sur le bouton pour qu'il ne soit pas appelé j'ai perdu toute la journée dans cette.
Utilisez donc ci-dessous le code
OriginalL'auteur Sumedh Ulhe
J'ai eu un problème similaire et il a été résolu par la suppression de la
android:clickable="true"
propriété de ExpandableListView sur xml.OriginalL'auteur cassioso
Lorsque vous travaillez avec extensible listes puis le groupe s'élargir, se fonctionnalité par défaut . signifie que le groupe va se développer que lorsque vous cliquez sur, vous donot besoin de overrirde onGroupExpand(int groupPosition) ou toute autre méthode de simplement remplir de vos données dans votre liste quelque chose comme ceci:
OriginalL'auteur Anu
forumListView.collapseGroup(groupPosition);
devrait être
forumListView.collapseGroup(je);
OriginalL'auteur Max Volos
Ajouter
implements OnGroupExpandListener
à votre Activité. Alors Ça fonctionne. Je suis en Utilisant la même, il fonctionne très bien.OriginalL'auteur Anil Jadhav