大佬教程收集整理的这篇文章主要介绍了android expandlistview不会扩展或接收点击事件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道有很多关于这个话题的帖子,但我已经阅读了所有的内容,尝试了许多事情,没有运气,希望我错过了一些很容易被别人发现的小错误.
主要活动:
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; } }); }
注意:setUpForums()方法只需要系统数组并将它们放入forumList和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,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; } }
集团布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://scheR_588_11845@as.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>
儿童布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://scheR_588_11845@as.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>
主页面布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://scheR_588_11845@as.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>
任何您可以提供的帮助是非常感谢!
@H_673_28@我们来看看setOnGroupClickListener中的Boolean onGroupClick(…)的正文.你已经返回true,意味着“the click was handled”
如果要扩展,您应该返回false.所以我建议你这样做:
forumListView.setOnGroupClickListener(new OnGroupClickListener() { @Override public Boolean onGroupClick(ExpandableListView parent,long id) { Log.d("onGroupClick:","worked"); parent.expandGroup(groupPosition); return false; } });
在Android.widget.ExpandableListView类中,有一个名为Boolean handleItemClick(View v,int position,long id)的方法,该方法负责扩展/折叠组或将点击传递给适当的子节点.
/* It's a group click,so pass on event */ if (mOnGroupClickListener != null) { if (mOnGroupClicklistener.onGroupClick(this,v,pos@R_404_1979@data.position.groupPos,id)) { pos@R_404_1979@data.recycle(); return true; } } /* expanding/collapsing/other tasks... */
如果您实现onGroupClick返回true,则第8行以下的代码将永远不会被执行. (这意味着组不会崩溃,扩展)
希望我的答案帮助你:-)祝你好运!
@H_673_28@ @H_673_28@以上是大佬教程为你收集整理的android expandlistview不会扩展或接收点击事件全部内容,希望文章能够帮你解决android expandlistview不会扩展或接收点击事件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。