ExpandableListAdapter二级菜单适配器

package com.bawei.test313.adapter;

import android.content.Context;
import android.database.CursorJoiner;
import android.database.DataSetObserver;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ExpandableListAdapter;
import android.widget.TextView;

import com.bawei.test313.R;
import com.bawei.test313.bean.Info;

import java.util.ArrayList;

/**
 * Created by Administrator on 2017/3/13.
 */
public class MyAdapter implements ExpandableListAdapter {
   // private ArrayList<Info.Result> result;
    private ArrayList<Info.Result> parent_list;
    private ArrayList<Info.Result> child_list;
    private Context context;

    public MyAdapter(ArrayList<Info.Result> parent_list, ArrayList<Info.Result> child_list, Context context) {
        this.parent_list = parent_list;
        this.child_list = child_list;
        this.context = context;
    }

    @Override
    public void registerDataSetObserver(DataSetObserver observer) {

    }

    @Override
    public void unregisterDataSetObserver(DataSetObserver observer) {

    }

    @Override
    public int getGroupCount() {
        return parent_list.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        ArrayList<Info.Result> list_this=new ArrayList<Info.Result>();
        for(int i=0;i<child_list.size();i++){
            if (child_list.get(i).parentid.equals(parent_list.get(groupPosition).cityid)){
                list_this.add(child_list.get(i));
            }
        }
        return list_this.size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return parent_list.get(groupPosition);
    }

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

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

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

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

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
       convertView=View.inflate(context, R.layout.list_main,null);
        TextView parent_text = (TextView) convertView.findViewById(R.id.parent_text);
        parent_text.setText(parent_list.get(groupPosition).city);
        return convertView;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        convertView=View.inflate(context, R.layout.child_main,null);
        TextView child_text = (TextView) convertView.findViewById(R.id.child_text);
        //寻找到对应条目的子条目集合
        ArrayList<Info.Result> list_this=new ArrayList<Info.Result>();
        for (int i=0;i<child_list.size();i++){
            if (child_list.get(i).parentid.equals(parent_list.get(groupPosition).cityid)){
                list_this.add(child_list.get(i));
            }

        }
        child_text.setText(list_this.get(childPosition).city);
        return convertView;

    }

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

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

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

    @Override
    public void onGroupExpanded(int groupPosition) {

    }

    @Override
    public void onGroupCollapsed(int groupPosition) {

    }

    @Override
    public long getCombinedChildId(long groupId, long childId) {
        return 0;
    }

    @Override
    public long getCombinedGroupId(long groupId) {
        return 0;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android TV的界面通常使用垂直的二级列表来展示不同的选项。在实现这样的界面时,可以使用ExpandableListView和Fragment来完成。 首先,我们可以在布局文件中添加一个ExpandableListView来显示一级和二级列表。在Activity或者Fragment中,我们可以通过代码来设置ExpandableListView的适配器,并实现对应的方法来填充数据。 接下来,我们可以创建一个Fragment,用于显示一级列表的选项。该Fragment会包含一个ExpandableListView,并通过适配器来填充一级列表的数据。一个ExpandableListView适配器需要实现ExpandableListAdapter接口,并重写对应的方法,例如getGroupCount()、getChildrenCount()和getChildView()等方法。 在第一级列表的每个选项被点击时,我们可以通过OnClickListener来监听并获取选中的位置。然后,我们可以加载对应的子级列表的Fragment,并将其添加到Activity或者父级Fragment中的布局中。 对于二级列表的数据填充,我们可以创建一个继承自BaseExpandableListAdapter适配器。这个适配器需要实现对应的方法,例如getChild()、getChildId()、getGroup()和getGroupId()等方法来填充数据。 最后,通过FragmentTransaction将我们的Fragment添加到Activity或者父级Fragment的布局中,并提交事务即可完成。这样,我们就实现了Android TV上的二级竖向展示界面。 总结来说,使用ExpandableListView和Fragment可以实现Android TV的二级竖向展示界面。我们可以通过ExpandableListView的适配器来填充一级列表的数据,并在点击一级列表选项时动态加载并显示对应的二级列表的Fragment。通过这样的方式,我们可以方便地实现Android TV上的界面布局。 ### 回答2: 在Android TV上,我们可以使用ExpandableListView和Fragment来实现二级竖向界面。 首先,我们需要创建一个ExpandableListView来呈现父级项和子级项。ExpandableListView是Android提供的一个可展开和折叠的列表视图,可以用于显示具有层级关系的数据。我们可以使用Adapter来为ExpandableListView提供数据。 接下来,我们需要使用Fragment来实现二级竖向界面。Fragment是Android提供的一种可以嵌套于Activity的独立组件,可以灵活地管理视图层次结构并自己处理用户界面交互。我们可以创建两个Fragment,一个用于显示父级项列表,另一个用于显示选中的父级项对应的子级项列表。 在父级项列表Fragment中,我们可以使用ExpandableListView来展示父级项。我们可以使用一个自定义的ExpandableListAdapter来为ExpandableListView提供数据,并在父级项被点击时,更新选中的父级项的子级项数据。 在子级项列表Fragment中,我们可以根据点击的父级项的位置获取对应的子级项数据,并使用RecyclerView或ListView来展示子级项。 通过在Fragment中嵌套使用ExpandableListView和子级项列表,我们可以实现一个二级竖向的界面。用户可以点击父级项来展开或折叠子级项,并可以在子级项列表中进行滚动浏览。这样可以提供良好的用户体验。 总结起来,使用ExpandableListView和Fragment,我们可以实现一个二级竖向的界面,用于在Android TV上展示层级关系的数据。 ### 回答3: 在Android TV上,可以使用ExpandableListView和Fragment来实现二级竖向布局。 首先,创建一个Fragment用于显示ExpandableListView。在Fragment的布局文件中,可以使用ExpandableListView来展示二级竖向布局。ExpandableListView需要一个Adapter来提供数据,因此需要创建ExpandableListAdapterExpandableListAdapter需要实现父项和子项的数据提供,决定每个父项和子项的视图。在Adapter中,可以使用ParentItem作为父项的数据模型,ChildItem作为子项的数据模型。然后,通过重写getGroupCount()、getChildCount()、getGroup()、getChild()等方法,将数据绑定到ExpandableListView上。 接下来,创建一个Fragment用于显示二级竖向布局的子项内容。在这个Fragment中,可以展示子项所需的内容。可以根据需要自定义布局文件,用于展示每个子项的UI元素。在这个Fragment中,可以根据需要加载和显示不同的子项内容。 在主Activity中,可以使用FragmentManager来管理Fragment的显示和切换。当父项被点击时,可以通过监听ExpandableListView的OnChildClickListener,获取子项的位置信息,并根据位置信息加载对应的子项内容Fragment,并将其添加到FragmentManager中显示。 以上就是使用Android TV上的ExpandableListView和Fragment实现二级竖向布局的基本步骤。通过适当调整布局和数据,可以实现不同的二级竖向布局效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值