Expandablelistview在Android中使用自定义子布局

时间:2018-06-08 05:18:44

标签: android listview android-recyclerview expandablelistview expandablelistadapter

我一直在谷歌搜索两天,但很难找到任何运气与我的问题。我想要实现的是我想要创建一个ExpandableListView,其中每个孩子在右边有两个值,而在问题How to achieve Expandablelistview child custom layout?之后左边的另一个是相关但不完全,因为有一些缺少的元素

ExpandableListView View Design

这就是我想要设计我的用户界面我的数组是这样的

[Parent 1 =[{Child 1, Child 1.1},{child 2,child 2.1},{child 3,child 3.1},{child 4, child 4.1},{child 5, child 5.1}],Parent 1=[{}]]

等等,现在请帮我解决这个问题,这样我就可以创建类似给定的UI

1 个答案:

答案 0 :(得分:1)

使用此CustomAdapter并使用自定义enter code here布局,只需创建layout.xml并在此adapter中使用

并尝试改善您的R&d skills这不是一项非常重要的任务,您需要花两天时间来实现它。任何网站都不提供code因为您只想指导我们,我们需要根据我们的要求改进该代码

public class CustomAdapter extends BaseExpandableListAdapter {
    Context context;
    ArrayList<WeblListHeader> webHeader;

    public CustomAdapter(Context context, ArrayList<WeblListHeader> webHeader) {
        this.context = context;
        this.webHeader = webHeader;
    }

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

    @Override
    public int getChildrenCount(int i) {
        return webHeader.get(i).getAl_state().size();
    }

    @Override
    public Object getGroup(int i) {
        return webHeader.get(i);
    }

    @Override
    public Object getChild(int i, int i1) {
        return webHeader.get(i).getAl_state().get(i1);
    }

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

    @Override
    public long getChildId(int i, int i1) {
        return i1;
    }

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

    @Override
    public View getGroupView(int i, boolean isExpanded, View view, ViewGroup viewGroup) {
        if (view==null){

            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = layoutInflater.inflate(R.layout.your_expend_header_layout, null);
        }
        TextView tv_state = (TextView)view.findViewById(R.id.tv_name);

        ImageView iconExpend = (ImageView)view.findViewById(R.id.iconExpend);
        if (isExpanded) {
            iconExpend.setImageResource(R.drawable.arrow_up_selected);
            tv_state.setTextColor(context.getResources().getColor(R.color.selectedText));
        } else {
            iconExpend.setImageResource(R.drawable.arrow_down_unselect);
            tv_state.setTextColor(context.getResources().getColor(R.color.white));
        }

        tv_state.setText(webHeader.get(i).getStr_country());
        return view;
    }

    @Override
    public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {
        if (view==null){

            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = layoutInflater.inflate(R.layout.your_child_layout, null);
        }

        TextView tv_state = (TextView)view.findViewById(R.id.tv_name);

        tv_state.setText(webHeader.get(i).getAl_state().get(i1).getStr_name());
        tv_state.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });
        return view;
    }

    @Override
    public boolean isChildSelectable(int i, int i1) {
        return false;
    }

让我知道它是否适合您,如果有任何问题。