Android中的可扩展列表

今天,我们将讨论Android中的ExpandableListView 。 在这里,我使用带有ADT插件的Eclipse来构建此示例。 这个例子很简单。 在工作区中创建一个新的Android应用程序项目。 从ExpandableListActivity.扩展您的主要活动ExpandableListActivity.

供您参考,请找到以下代码:

package com.example.expandablelistviewdemo;
import android.app.ExpandableListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
public class MainActivity extends ExpandableListActivity {
private static final String arrGroupElements[] = { "Item1", "Item2", "Item3",
"Item4", "Item5", "Item6", "Item7", "Item8", "Item9" };
/**
* strings for child elements
*/
private static final String arrChildElements[][] = {
{ "Details1 A","Details1 B", "Details1 C" },
{ "Details2 A","Details2 B", "Details2 C" },
{ "Details3 A","Details3 B", "Details3 C" },
{ "Details4 A","Details4 B", "Details4 C" },
{ "Details5 A","Details5 B", "Details5 C" },
{ "Details6 A","Details6 B", "Details6 C" },
{ "Details7" },
{ "Details8" },
{ "Details9" }
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.article_screen);
setListAdapter(new ExpandableListAdapter(this));
}
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context myContext;
public ExpandableListAdapter(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.article_list_child_item_layout, null);
}
TextView yourSelection = (TextView) convertView
.findViewById(R.id.articleContentTextView);
yourSelection
.setText(arrChildElements[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.article_list_item_layout, null);
}
TextView groupName = (TextView) convertView
.findViewById(R.id.articleHeaderTextView);
groupName.setText(arrGroupElements[groupPosition]);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
}

现在我们需要创建布局文件。 在这里,我们将创建3个布局文件。 第一个用于主布局,第二个用于可扩展列表项,第三个用于可扩展列表子项。

请找到以下代码:

主布局文件(article_screen.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp">
<TextView android:id="@+id/articleListHeaderTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:text="List Header"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#0585C4"
android:textSize="14dp"
android:textStyle="bold" />
<ExpandableListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/articleListHeaderTextView"
android:layout_margin="10dp"
android:divider="@android:color/darker_gray"
android:childDivider="@android:color/white"
android:dividerHeight="2dp"
android:fadingEdge="none">
</ExpandableListView>
</RelativeLayout>

可扩展列表项布局文件(article_list_item_layout.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:paddingBottom="10dp"
android:paddingLeft="25dp"
android:paddingTop="10dp">
<TextView android:id="@+id/articleHeaderTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="false"
android:layout_centerHorizontal="false"
android:layout_centerVertical="true"
android:layout_margin="10dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#0585C4"
android:textSize="12sp"
android:textStyle="bold" />
</RelativeLayout>
可扩展列表项子布局文件(article_list_child_item_layout.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFE4DEDE"
android:padding="10dp">
<TextView android:id="@+id/articleContentTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textColor="#FF000000" />
</RelativeLayout>

而已。 现在,您可以在模拟器或真实设备上运行此应用程序。 它应该看起来像以下图像:

Android ExpandableListView示例(已扩展)

Android ExpandableListView示例(已扩展)

Android ExpandableListView

Android ExpandableListView

参考:来自Phlox Blog博客的JCG合作伙伴 Piyas De的Android扩展列表

翻译自: https://www.javacodegeeks.com/2013/06/expandable-list-in-android.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值