ExpandableList查看不扩大 [英] ExpandableList View don't expand

查看:149
本文介绍了ExpandableList查看不扩大的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图以个性化的ExpandableLisTview

创建


  • Iterator.Xml:随着ExpandableList查看

  • group.xml:用一个简单的TextView和一个Button
  • 系统相对布局
  • Child.xml:只有一个TextView
  • 系统相对布局

类:

 包Android.MyExapandableListView;进口android.app.Activity;
进口android.app.ExpandableListActivity;
进口android.os.Bundle;进口android.view.ContextMenu;
进口android.view.LayoutInflater;
进口android.view.MenuItem;
进口android.view.View;
进口android.view.ViewGroup;
进口android.view.ContextMenu.ContextMenuInfo;
进口android.widget.BaseExpandableListAdapter;
进口android.widget.ExpandableListAdapter;
进口android.widget.ExpandableListView;
进口android.widget.TextView;
进口android.widget.Toast;
进口android.widget.ExpandableListView.ExpandableListContextMenuInfo;公共类主要活动扩展{
  / **当第一次创建活动调用。 * /
  @覆盖
  公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.iterator);
    ExpandableListView LV =
        (ExpandableListView)this.findViewById(R.id.ExpandableListView);
    MyExpandableListAdapter问题=新MyExpandableListAdapter();
    lv.setAdapter(问题);  }  公共类MyExpandableListAdapter扩展BaseExpandableListAdapter {
    私人LayoutInflater吹气= NULL;
    私有String [] =组{人名,狗名,名猫
        鱼名};
    私有String [] [] =儿童{{阿诺德,巴里,查,大卫},
        {王牌,强盗,双查,平分},{蓬松,的Snuggles},
        {戈尔迪,泡}};    公共MyExpandableListAdapter(){
      this.inflater = main.this.getLayoutInflater();
    }    公共对象getChild(INT groupPosition,诠释childPosition){
      返回儿[groupPosition] [childPosition];
    }    众长getChildId(INT groupPosition,诠释childPosition){
      返回childPosition;
    }    公众诠释getChildrenCount(INT groupPosition){
      返回儿[groupPosition]。长度;
    }    公共对象getGroup(INT groupPosition){
      返回组[groupPosition]
    }    公众诠释getGroupCount(){
      返回groups.length;
    }    众长getGroupId(INT groupPosition){
      返回groupPosition;
    }    公共查看getChildView(INT groupPosition,诠释childPosition,
        布尔isLastChild,查看convertView,父母的ViewGroup){
      convertView = inflater.inflate(R.layout.child,NULL);
      TextView的问题=(TextView中)convertView.findViewById(R.id.nomChild);
      question.setText(getChild(groupPosition,childPosition)的ToString());
      返回convertView;
    }    公共查看getGroupView(INT groupPosition,布尔isExpanded,
        查看convertView,父母的ViewGroup){
      // TextView中的TextView = getGenericView();
      // textView.setText(getGroup(groupPosition)的ToString());
      convertView = inflater.inflate(R.layout.group,NULL);
      TextView的问题=(TextView中)convertView.findViewById(R.id.nomGroup);
      question.setText(getGroup(groupPosition)的ToString());
      返回convertView;
    }    公共布尔isChildSelectable(INT groupPosition,诠释childPosition){
      返回true;
    }    公共布尔hasStableIds(){
      返回true;
    }
  }
}

问题是,我可以得到正确的物品,但是当我试图展开组,这是行不通的。

任何想法?


编辑:意见

Iterator.XML

 <?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:方向=垂直
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    >
< ExpandableListView
 机器人:ID =@ + ID / ExpandableListView
 机器人:layout_width =FILL_PARENT
 机器人:layout_height =WRAP_CONTENT
 机器人:layout_gravity =center_vertical
 >
  < / ExpandableListView>< / LinearLayout中>

Group.XML

 <?XML版本=1.0编码=UTF-8&GT?;
< AbsoluteLayout
机器人:ID =@ + ID / widget0
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT
的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
>
< RelativeLayout的
机器人:ID =@ + ID / widget29
机器人:layout_width =305px
机器人:layout_height =41px
机器人:layout_x =8像素
机器人:layout_y =29px>
<的TextView
机器人:ID =@ + ID / nomGroup
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文字=TextView的
机器人:layout_centerVertical =真
机器人:layout_centerHorizo​​ntal =真
>
< / TextView的>
<按钮
机器人:ID =@ + ID / widget31
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文字=按钮
机器人:layout_alignParentTop =真
机器人:layout_alignParentRight =真
>
< /按钮>
< / RelativeLayout的>
< / AbsoluteLayout>

Child.XML

 <?XML版本=1.0编码=UTF-8&GT?;
< AbsoluteLayout
机器人:ID =@ + ID / widget0
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT
的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
>
< RelativeLayout的
机器人:ID =@ + ID / nomChild
机器人:layout_width =305px
机器人:layout_height =41px
机器人:layout_x =8像素
机器人:layout_y =29px
>
<的TextView
机器人:ID =@ + ID / widget30
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文字=TextView的
机器人:layout_centerVertical =真
机器人:layout_centerHorizo​​ntal =真
>
< / TextView的>
< / RelativeLayout的>
< / AbsoluteLayout>


解决方案

你加入机器人:可聚焦=FALSE来你的按钮定义是什么?这解决了类似的行为我。

 <按钮
    机器人:ID =@ + ID / widget31
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:文字=按钮
    机器人:可聚焦=假
    机器人:layout_alignParentTop =真
    机器人:layout_alignParentRight =真正的>
< /按钮>

I'm trying to personalize an ExpandableLisTview

I create

  • Iterator.Xml: with The ExpandableList View
  • group.xml:A relative Layout with a simple TextView and a Button
  • Child.xml:A relative layout with just a textView

Class:

package Android.MyExapandableListView;

import android.app.Activity;
import android.app.ExpandableListActivity;
import android.os.Bundle;

import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;

public class main extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.iterator);
    ExpandableListView lv =
        (ExpandableListView) this.findViewById(R.id.ExpandableListView);
    MyExpandableListAdapter questions = new MyExpandableListAdapter();
    lv.setAdapter(questions);

  }

  public class MyExpandableListAdapter extends BaseExpandableListAdapter {
    private LayoutInflater inflater = null;
    private String[] groups = { "People Names", "Dog Names", "Cat Names",
        "Fish Names" };
    private String[][] children = { { "Arnold", "Barry", "Chuck", "David" },
        { "Ace", "Bandit", "Cha-Cha", "Deuce" }, { "Fluffy", "Snuggles" },
        { "Goldy", "Bubbles" } };

    public MyExpandableListAdapter(){
      this.inflater = main.this.getLayoutInflater();
    }

    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 Object getGroup(int groupPosition) {
      return groups[groupPosition];
    }

    public int getGroupCount() {
      return groups.length;
    }

    public long getGroupId(int groupPosition) {
      return groupPosition;
    }

    public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {
      convertView = inflater.inflate(R.layout.child, null);
      TextView question = (TextView) convertView.findViewById(R.id.nomChild);
      question.setText(getChild(groupPosition, childPosition).toString());
      return convertView;
    }

    public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
      // TextView textView = getGenericView();
      // textView.setText(getGroup(groupPosition).toString());
      convertView = inflater.inflate(R.layout.group, null);
      TextView question = (TextView) convertView.findViewById(R.id.nomGroup);
      question.setText(getGroup(groupPosition).toString());
      return convertView;
    }

    public boolean isChildSelectable(int groupPosition, int childPosition) {
      return true;
    }

    public boolean hasStableIds() {
      return true;
    }
  }
}

The problem is that I can get the items correctly but when I'm trying to expand the group,it doesn't work.

Any idea?


EDIT: the views

Iterator.XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ExpandableListView
 android:id="@+id/ExpandableListView"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_gravity="center_vertical"
 >
  </ExpandableListView> 

</LinearLayout>

Group.XML

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<RelativeLayout
android:id="@+id/widget29"
android:layout_width="305px"
android:layout_height="41px"
android:layout_x="8px"
android:layout_y="29px">
<TextView
android:id="@+id/nomGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
>
</TextView>
<Button
android:id="@+id/widget31"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
>
</Button>
</RelativeLayout>
</AbsoluteLayout>

Child.XML

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<RelativeLayout
android:id="@+id/nomChild"
android:layout_width="305px"
android:layout_height="41px"
android:layout_x="8px"
android:layout_y="29px"
>
<TextView
android:id="@+id/widget30"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
>
</TextView>
</RelativeLayout>
</AbsoluteLayout>

解决方案

have you added android:focusable="false" to your button definition? this solved a similar behaviour for me.

<Button
    android:id="@+id/widget31"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:focusable="false"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true">
</Button>

这篇关于ExpandableList查看不扩大的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆