当前位置: 首页 > 编程笔记 >

android使用ExpandableListView控件实现小说目录效果的例子

马阳晖
2023-03-14
本文向大家介绍android使用ExpandableListView控件实现小说目录效果的例子,包括了android使用ExpandableListView控件实现小说目录效果的例子的使用技巧和注意事项,需要的朋友参考一下

今天给大家讲讲android的目录实现方法,就像大家看到的小说目录一样,android 提供了ExpandableListView控件可以实现二级列表展示效果,现在给大家讲讲这个控件的用法,下面是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"

    android:background="#FFFFFF"

  >

  <ExpandableListView

       android:id="@+id/elv_journal_catalog"

       android:layout_height="fill_parent"

       android:layout_width="fill_parent"

       android:cacheColorHint="#FFFFFF"

       />

</LinearLayout>


这代码很简单,和写listView的方法差不多,接下来是ExpandableListView在activity中的代码:

 private ExpandableListView elv_journal_catalog;

    private List<List<Article>> childrenObj;

         private JournalCatalogListAdapter adapter;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.journal_catalog);

        init();

        elv_journal_catalog.setGroupIndicator(null);

        elv_journal_catalog.setDivider(null);

        loadData();     }

    private void init() {         elv_journal_catalog = (ExpandableListView) findViewById(R.id.elv_journal_catalog);         elv_journal_catalog.setOnChildClickListener(listener);     }     private void loadData() {         Message msg = handler.obtainMessage();         msg.what = 1;         msg.sendToTarget();

        childrenObj = new ArrayList<List<Article>>();         new Thread() {

            @Override             public void run() {                 if (!isLoading) {                     queryArticleList();                 } else {                     queryArticleListFromSqlite();                 }             }

        }.start();

        adapter = new JournalCatalogListAdapter(this, childrenObj);         elv_journal_catalog.setAdapter(adapter);     }

ExpandableListView展示数据的时候默认是每个模块下的列表项是闭合状态的,如果要实现初始化的时候就展开可以通过ExpandableListView.expandGroup(location)方法来实现,而且每个父级列表项左边会出现一个系统自带的图标,这个图标是用来表示列表展开和闭合的状态的,如果不显示或者要替换这个图标可以用
ExpandableListView.setGroupIndicator(Drawable icon)方法来实现,我这里是直接是没有使用任何图标,你也可以在adapter中自己在xml中定义自己的图标.
ExpandableListView填充数据需要是二级菜单的模式所以数据结构大家可以根据项目情况而定,我这里由于标题是定死的所以只传的每个标题下的数据,下面是JournalCatalogListAdapter的代码:


public class JournalCatalogListAdapter extends BaseExpandableListAdapter {

    private LayoutInflater inflater;

    private String[] parent = new String[] { "美颜美体", "潮流单品", "娱乐八卦", "情感",             "观点", "健康生活" };

    private List<List<Article>> clildren = new ArrayList<List<Article>>();

    public JournalCatalogListAdapter(Context context,             List<List<Article>> clildren) {         this.clildren = clildren;         inflater = LayoutInflater.from(context);     }

    @Override     public Object getChild(int groupPosition, int childPosition) {         return clildren.get(groupPosition).get(childPosition);     }

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

    @Override     public View getChildView(int groupPosition, int childPosition,             boolean isLastChild, View convertView, ViewGroup parent) {         if (convertView == null) {             convertView = inflater.inflate(                     R.layout.journal_catalog_list_item_content, null);         }         TextView textView = (TextView) convertView                 .findViewById(R.id.tv_journal_catalog_list_item_content);         Article a = (Article) getChild(groupPosition, childPosition);         textView.setText(a.getTitle());         return convertView;     }

    @Override     public int getChildrenCount(int groupPosition) {         return clildren.get(groupPosition).size();     }

    @Override     public Object getGroup(int groupPosition) {         return parent[groupPosition];     }

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

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

    @Override     public View getGroupView(int groupPosition, boolean isExpanded,             View convertView, ViewGroup parent) {         if (convertView == null) {             convertView = inflater.inflate(                     R.layout.journal_catalog_list_item_title, null);         }         TextView textView = (TextView) convertView                 .findViewById(R.id.tv_journal_catalog_list_item_title);

        String title = String.valueOf(getGroup(groupPosition));         textView.setText(title);         convertView.setOnClickListener(null);         return convertView;     }

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

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

 类似资料:
  • 本文向大家介绍Android ExpandableListView展开列表控件使用实例,包括了Android ExpandableListView展开列表控件使用实例的使用技巧和注意事项,需要的朋友参考一下 你是否觉得手机QQ上的好友列表那个控件非常棒? 不是..... 那也没关系,学多一点知识对自己也有益无害。 那么我们就开始吧。 展开型列表控件, 原名ExpandableListView 是普

  • 本文向大家介绍Android 中使用ExpandableListView 实现分组的实例,包括了Android 中使用ExpandableListView 实现分组的实例的使用技巧和注意事项,需要的朋友参考一下  Android 中使用ExpandableListView 实现分组 一个视图显示垂直滚动两级列表中的条目。这不同于列表视图,允许两个层次,类似于QQ的好友分组。要实现这个效果的整体思路

  • 本文向大家介绍Android控件实现水滴效果,包括了Android控件实现水滴效果的使用技巧和注意事项,需要的朋友参考一下 看到ios版上QQ刷新效果像水滴,然后自己也想着去实现这样的效果,这篇文章暂时没有介绍下拉刷新的效果,只是单独用一个控件来实现这样的水滴效果。 效果图如下: 一、总体思路 1、画两个圆形,其中一个就是上面的大圆,还有一个是下面的小圆,大圆和小圆不断变小,大圆的位置保持不变,小

  • 本文向大家介绍Android中ExpandableListView的用法实例,包括了Android中ExpandableListView的用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android中ExpandableListView的用法,ExpandableListView是android中可以实现下拉list的一个控件,具体的实现方法如下: 首先:在layout的xml文

  • 本文向大家介绍Android中使用Expandablelistview实现微信通讯录界面,包括了Android中使用Expandablelistview实现微信通讯录界面的使用技巧和注意事项,需要的朋友参考一下 之前的博文《Android 中使用ExpandableListView 实现分组的实例》我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的

  • 本文向大家介绍分享Android中ExpandableListView控件使用教程,包括了分享Android中ExpandableListView控件使用教程的使用技巧和注意事项,需要的朋友参考一下 本文采用一个Demo来展示Android中ExpandableListView控件的使用,如如何在组/子ListView中绑定数据源。直接上代码如下: 程序结构图: layout目录下的 main.x