1

我正在尝试通过实现自定义适配器在 Android 中实现 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="fill_parent"
>
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="This is an expandable listview"
    />
<ExpandableListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />


</LinearLayout>

组布局文件为:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>

<TextView
    android:id="@+id/tvPlayerName"
    android:textSize="14px"
    android:textStyle="normal"
    android:layout_width="150px"
    android:layout_height="wrap_content"
    />

子布局文件是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>

<TextView
    android:id="@+id/tvPlayerName"
    android:textSize="14px"
    android:textStyle="normal"
    android:layout_width="150px"
    android:layout_height="wrap_content"
    />

</LinearLayout>

最后,活动类文件是:

public class ExpandableListViewTest extends ExpandableListActivity {
 String groupElements[] = {"India","Austrailia","England","South Africa"};
 String childElements[][] = {
    {"Sachin Tendulkar","Raina","Dhoni","Yuvraj"},
    {"Ponting","Adam Gilchrist","Michael Clarke"},
    {"Andrew Strauss","Kevin Peterson","Nasir Hussain"},
    {"Grame Smith","AB de Villiers","Jacques Kallis"}
};

int width;
ExpandableListView expList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //Setup our adapter
    MyExpandableAdapter mAdapter = new MyExpandableAdapter(this);
    setListAdapter(mAdapter);
}
public class MyExpandableAdapter extends BaseExpandableListAdapter
{
   private Context myContext;

   public MyExpandableAdapter(Context context)
   {
       this.myContext= context;
   }

@Override
public Object getChild(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return childElements[groupPosition][childPosition];
}

@Override
public long getChildId(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return childPosition;
}

@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    if(convertView == null)
    {
        LayoutInflater inflater = getLayoutInflater();
        convertView = inflater.inflate(R.layout.child, parent,false);
    }
    TextView tvPlayerName = 
       (TextView)convertView.findViewById(R.id.tvPlayerName);
    tvPlayerName.setText(childElements[groupPosition][childPosition]);

    return convertView;

}

@Override
public int getChildrenCount(int groupPosition) {
    // TODO Auto-generated method stub
    return childElements[groupPosition].length;
}

@Override
public Object getGroup(int groupPosition) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public int getGroupCount() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public long getGroupId(int groupPosition) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    if(convertView == null)
    {
        LayoutInflater inflater = getLayoutInflater();
        convertView = inflater.inflate(R.layout.group,parent,false);
    }
    TextView tvGroupName = (TextView)convertView.findViewById(R.id.groupName);
    //tvGroupName.setText(groupElements[groupPosition]);
    tvGroupName.setText("Group Row");

    return convertView;

}

@Override
public boolean hasStableIds() {
    // TODO Auto-generated method stub
    return false;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return false;
}


}

}

一切似乎都很简单,但运行应用程序后,屏幕保持空白。感谢任何帮助/理想。

4

2 回答 2

2

您的代码看起来不完整。您刚刚在方法中添加了占位符getGroup,getGroupIdgetGroupCount. 他们应该引用您的groupElements数组。

当前返回零的事实getGroupCount足以ExpandableListView不显示任何内容。

于 2012-05-14T14:20:15.583 回答
0

您可能应该将返回值设置为getGroupCount()to groupElements.length

当前返回的0表示您没有任何组,因此没有可显示的内容。

于 2012-05-14T14:20:48.873 回答