Java 可展开列表视图,垂直子视图

Java 可展开列表视图,垂直子视图,java,android,expandablelistview,Java,Android,Expandablelistview,我制作了一个类似于此链接中的可扩展列表:,但我想让孩子看起来是垂直的,而不是水平的 我只有1个包含以下内容的xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Expan

我制作了一个类似于此链接中的可扩展列表:,但我想让孩子看起来是垂直的,而不是水平的

我只有1个包含以下内容的xml:

<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="@android:id/list" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content"
          android:groupIndicator="@null"/>

其他的都在课堂上。如何将它们设置为垂直?
我的java代码与链接中的相同。

请看一下这个示例。希望这对你有帮助

public class ExpandListViewActivity extends ExpandableListActivity
{
 /**
  * strings for group elements
  */
    static final String arrGroupelements[] = 
    {
   "India",
   "Australia",
   "England",
   "South Africa"
 };

    /**
  * strings for child elements
  */
 static final String arrChildelements[][] = 
 {
   {
  "Sachin Tendulkar",
  "Raina",
  "Dhoni",
  "Yuvi"
   },
   {
  "Ponting",
  "Adam Gilchrist",
  "Michael Clarke"
   },
   {
  "Andrew Strauss",
  "kevin Peterson",
  "Nasser Hussain"
   },
   {
  "Graeme Smith",
  "AB de villiers",
  "Jacques Kallis"
   }
    };
 static final int arrChildelementsim[][] = 
 {
   {
  R.drawable.ic_launcher,
  R.drawable.aqua,
  R.drawable.pin_red,
  R.drawable.aqua,
   },
   {
       R.drawable.ic_launcher,
       R.drawable.ic_launcher,
       R.drawable.ic_launcher,

   },
   {
       R.drawable.ic_launcher,
       R.drawable.ic_launcher,
       R.drawable.ic_launcher,

   },
   {
       R.drawable.ic_launcher,
       R.drawable.ic_launcher,
       R.drawable.ic_launcher,

   }
    };
 DisplayMetrics metrics;
 int width;
 ExpandableListView expList;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);

        expList = getExpandableListView();
        metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        width = metrics.widthPixels;
        //this code for adjusting the group indicator into right side of the view
        expList.setIndicatorBounds(width - GetDipsFromPixel(50), width - GetDipsFromPixel(10));
        expList.setAdapter(new ExpAdapter(this));

  expList.setOnGroupExpandListener(new OnGroupExpandListener()
  {
   @Override
   public void onGroupExpand(int groupPosition) 
   {
    Log.e("onGroupExpand", "OK");
   }
  });

  expList.setOnGroupCollapseListener(new OnGroupCollapseListener()
  {
   @Override
   public void onGroupCollapse(int groupPosition) 
   {
    Log.e("onGroupCollapse", "OK");
   }
  });

  expList.setOnChildClickListener(new OnChildClickListener()
  {

@Override
public boolean onChildClick(ExpandableListView arg0, View arg1, int arg2,
        int arg3, long arg4) {
     Log.e("OnChildClickListener", "OK");
    // TODO Auto-generated method stub
    return false;
}
  });
    }

    public int GetDipsFromPixel(float pixels)
    {
     // Get the screen's density scale
     final float scale = getResources().getDisplayMetrics().density;
     // Convert the dps to pixels, based on density scale
     return (int) (pixels * scale + 0.5f);
    }
    public class ExpAdapter extends BaseExpandableListAdapter {

          private Context myContext;
          public ExpAdapter(Context context) {
           myContext = context;
          }
          @Override
          public Object getChild(int groupPosition, int childPosition) {
           return null;
          }

          @Override
          public long getChildId(int groupPosition, int childPosition) {
           return 0;
          }

          @Override
          public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {

           if (convertView == null) {
            LayoutInflater inflater =  (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.child_row, null);
           }

           TextView tvPlayerName = (TextView) convertView.findViewById(R.id.tvPlayerName);
           ImageView tvPlayerimage = (ImageView) convertView.findViewById(R.id.tvPlayerImage);
           tvPlayerName.setText(arrChildelements[groupPosition][childPosition]);
           tvPlayerimage.setImageResource(arrChildelementsim[groupPosition][childPosition]);
           return convertView;
          }

          @Override
          public int getChildrenCount(int groupPosition) {
           return arrChildelements[groupPosition].length;
          }

          @Override
          public Object getGroup(int groupPosition) {
           return null;
          }

          @Override
          public int getGroupCount() {
           return arrGroupelements.length;
          }

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

          @Override
          public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {

           if (convertView == null) {
            LayoutInflater inflater =  (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.group_row, null);
           }

           TextView tvGroupName = (TextView) convertView.findViewById(R.id.tvGroupName);
           tvGroupName.setText(arrGroupelements[groupPosition]);

           return convertView;
          }

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

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

Child_row.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="40dip"
    android:gravity="center_vertical"
    android:orientation="horizontal" >
<ImageView
        android:id="@+id/tvPlayerImage"
        android:layout_width="wrap_content"
        android:layout_height="30dip"
        android:gravity="center_vertical"
        android:layout_marginLeft="50dip"

         >
    </ImageView>
    <TextView
        android:id="@+id/tvPlayerName"
        android:layout_width="wrap_content"
        android:layout_height="30dip"
        android:gravity="center_vertical"
        android:layout_marginLeft="10dip"
        android:textSize="14sp" >
    </TextView>

</LinearLayout>

group_row.xml

<?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:orientation="vertical" >

    <TextView
        android:id="@+id/tvGroupName"
        android:layout_width="wrap_content"
        android:layout_height="40dip"
        android:gravity="center_vertical"
        android:paddingLeft="30dip"
        android:textSize="16sp"
        android:textStyle="bold" 
        >
    </TextView>

</LinearLayout>


main.xml

<?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:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <ExpandableListView
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:groupIndicator="@drawable/group_indicator" >

        <TextView
            android:id="@+id/android:empty"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="hello" >
        </TextView>
    </ExpandableListView>

</LinearLayout>
公共类ExpandListViewActivity扩展了ExpandableListActivity
{
/**
*组元素的字符串
*/
静态最终字符串arrGroupelements[]=
{
“印度”,
“澳大利亚”,
“英格兰”,
“南非”
};
/**
*子元素的字符串
*/
静态最终字符串元素[][]=
{
{
“Sachin Tendulkar”,
“雷娜”,
“多尼”,
“尤维”
},
{
“庞廷”,
“亚当·吉尔吉斯”,
“迈克尔·克拉克”
},
{
“安德鲁·施特劳斯”,
“凯文·彼得森”,
“纳赛尔·侯赛因”
},
{
“格雷姆·史密斯”,
“AB de villiers”,
“雅克·卡利斯”
}
};
静态最终整数arrChildelementsim[]]=
{
{
R.drawable.ic_发射器,
R.drawable.aqua,
R.drawable.pin_红色,
R.drawable.aqua,
},
{
R.drawable.ic_发射器,
R.drawable.ic_发射器,
R.drawable.ic_发射器,
},
{
R.drawable.ic_发射器,
R.drawable.ic_发射器,
R.drawable.ic_发射器,
},
{
R.drawable.ic_发射器,
R.drawable.ic_发射器,
R.drawable.ic_发射器,
}
};
显示度量;
整数宽度;
可扩展列表视图解释列表;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
expList=getExpandableListView();
metrics=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(度量);
宽度=度量。宽度像素;
//此代码用于将组指示器调整到视图右侧
setIndicatorBounds(宽度-GetDipsFromPixel(50),宽度-GetDipsFromPixel(10));
setAdapter(新的ExpAdapter(this));
expList.setOnGroupExpandListener(新的OnGroupExpandListener()
{
@凌驾
public void onGroupExpand(int groupPosition)
{
Log.e(“onGroupExpand”、“OK”);
}
});
expList.setOnGroupCollapseListener(新的OnGroupCollapseListener()
{
@凌驾
公共void-onGroupCollapse(int-groupPosition)
{
Log.e(“正常”、“正常”);
}
});
expList.setOnChildClickListener(新的OnChildClickListener()
{
@凌驾
公共布尔onChildClick(ExpandableListView arg0、视图arg1、int arg2、,
整数arg3,长arg4){
Log.e(“OnChildClickListener”,“OK”);
//TODO自动生成的方法存根
返回false;
}
});
}
公共整型GetDipsFromPixel(浮点像素)
{
//获取屏幕的密度刻度
最终浮动比例=getResources().getDisplayMetrics().density;
//根据密度比例将dps转换为像素
返回(int)(像素*比例+0.5f);
}
公共类ExpAdapter扩展了BaseExpandableListAdapter{
私人语境;
公共ExpAdapter(上下文){
myContext=上下文;
}
@凌驾
公共对象getChild(int-groupPosition,int-childPosition){
返回null;
}
@凌驾
公共长getChildId(int-groupPosition,int-childPosition){
返回0;
}
@凌驾
公共视图getChildView(int-groupPosition、int-childPosition、,
布尔值isLastChild、视图转换视图、视图组父级){
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)myContext.getSystemService(Context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.child_行,空);
}
TextView-tvPlayerName=(TextView)convertView.findViewById(R.id.tvPlayerName);
ImageView tvPlayerimage=(ImageView)convertView.findViewById(R.id.tvPlayerimage);
setText(arrChildelements[groupPosition][childPosition]);
tvPlayerimage.setImageResource(arrChildelementsim[groupPosition][childPosition]);
返回视图;
}
@凌驾
公共整数getChildrenCount(整数组位置){
返回元素[groupPosition]。长度;
}
@凌驾
公共对象getGroup(int-groupPosition){
返回null;
}
@凌驾
public int getGroupCount(){
返回argroupelements.length;
}
@凌驾
公共长getGroupId(int-groupPosition){
返回0;
}
@凌驾
公共视图getGroupView(int-groupPosition,布尔值isExpanded,
视图(视图、视图组父级){
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)myContext.getSystemService(Context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.group_行,空);
}
TextView-tvGroupName=(TextView)convertView.findViewById(R.id.tvGroupName);
tvGroupName.setText(arrGroupelements[groupPosition]);
返回视图;
}
@凌驾
公共布尔表ID(){
返回false;
}
@凌驾
公共布尔值isChildSelectable(int-groupPosition,int-childPosition){
返回true;
}
}
}
Child_row.xml
group_row.xml
main.xml

这不起作用,我在每个OnChildClickListener中都遇到了一个java代码错误