关于ExpandableListView嵌套ExpandableListView的问题

android_Y 2012-04-18 10:27:42
我在ExpandableListView中嵌套了ExpandableListView
被嵌套在子项中的ExpandableListView无法打开
只有子项那么高无法变高
主类

package R.M.activity;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import R.M.R;
import R.M.adapter.rmAdapter;
import android.app.ExpandableListActivity;
import android.os.Bundle;

public class MainActivity extends ExpandableListActivity {
/** Called when the activity is first created. */
String rootpath = "/";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
File root = new File(rootpath);
File[] files = root.listFiles();
List<File[]> child = new ArrayList<File[]>();
for(File file : files) {
child.add(file.listFiles());
}
setListAdapter(new rmAdapter(files, child, this));
}
}

适配器

package R.M.adapter;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import R.M.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;

/**
* @author yubin
* @version 2012-4-10 下午07:37:49
**/
public class rmAdapter extends BaseExpandableListAdapter {
File[] parentfiles = new File[1];
List<File[]> childlist = new ArrayList<File[]>();
Context context;
LayoutInflater inflater;

public rmAdapter(File[] p, List<File[]> c, Context con) {
parentfiles = p;
childlist = c;
context = con;
}

@Override
public File getChild(int groupPosition, int childPosition) {
return childlist.get(groupPosition)[childPosition];
}

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

@Override
public int getChildrenCount(int groupPosition) {
return childlist.get(groupPosition) != null ? childlist
.get(groupPosition).length : 0;
}

@Override
public File getGroup(int groupPosition) {
return parentfiles[groupPosition];
}

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

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

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

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

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.parent, null);
parentitem p = new parentitem();
p.tvp = (TextView) convertView.findViewById(R.id.tvparent);
p.tvp.setText(parentfiles[groupPosition].getName());
return convertView;
}

class parentitem {
TextView tvp;
}

@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
if(childlist.get(groupPosition)[childPosition].isDirectory()) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.childfile, null);
ExpandableListView elv = (ExpandableListView) convertView
.findViewById(R.id.elvmain);
File[] parentfile = childlist.get(groupPosition)[childPosition]
.listFiles();
List<File[]> childfile = new ArrayList<File[]>();
for(File file : parentfile) {
childfile.add(file.listFiles());
}
elv.setAdapter(new rmAdapter(parentfile, childfile, context));
}
else {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.child, null);
parentitem p = new parentitem();
p.tvp = (TextView) convertView.findViewById(R.id.tvchild);
p.tvp.setText(childlist.get(groupPosition)[childPosition].getName());
}
return convertView;
}
}

主类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="wrap_content"
android:background="#ffffff">
<ExpandableListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fadingEdge="none">
</ExpandableListView>
</LinearLayout>

子项为ExpandableListView的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="wrap_content"
android:background="#ffffff">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="40dip">
<ExpandableListView
android:id="@+id/elvmain"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fadingEdge="none">
</ExpandableListView>
</LinearLayout>
</LinearLayout>
...全文
522 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
stevencpp 2014-12-02
  • 打赏
  • 举报
回复
我也遇到这个问题了。。
ter1233 2013-11-28
  • 打赏
  • 举报
回复
最后怎么弄的啊?
ieee802x 2013-07-17
  • 打赏
  • 举报
回复
楼主解决了吗?我也遇到这个问题了
android_Y 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

去看看这个吧
http://blog.csdn.net/jasonzhou613/article/details/7892891
我也是刚刚解决了一个类似的问题,希望对你有用。
[/Quote]
那个只是套一层我的那个都不确定套几层还是木有用
不过还是谢谢你了
帖子结了给不了分了
shihuacai 2012-08-26
  • 打赏
  • 举报
回复
请问你解决了没有啊
Jasonzhou613 2012-08-21
  • 打赏
  • 举报
回复
去看看这个吧
http://blog.csdn.net/jasonzhou613/article/details/7892891
我也是刚刚解决了一个类似的问题,希望对你有用。
android_Y 2012-04-20
  • 打赏
  • 举报
回复
难道就没一个人会吗?

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧