Android中具有自定义子布局的Expandablelistview

Posted

技术标签:

【中文标题】Android中具有自定义子布局的Expandablelistview【英文标题】:Expandablelistview With Custom Child Layout in Android 【发布时间】:2018-11-18 02:40:49 【问题描述】:

我在谷歌上搜索了两天,但很难找到我的问题的运气。我想要实现的是我想创建一个ExpandableListView,其中每个孩子都有两个值,一个在右边,另一个在左边,下面的问题:How to achieve Expandablelistview child custom layout? 是相关的,但不完全因为有一些元素不见了

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

[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

【问题讨论】:

您可以为您的孩子定制课程。试试我的示例来回答这个问题:***.com/questions/50092400/… 希望对您有所帮助! @I_A_Mok 感谢您的帮助 【参考方案1】:

使用此CustomAdapter 并使用自定义enter code herelayout 只需创建您的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;
    

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

【讨论】:

以上是关于Android中具有自定义子布局的Expandablelistview的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI GeometryReader 不会在中心布局自定义子视图

具有自定义子组件的自定义 Blazor 组件

具有自定义行布局的 ListView - Android

PL/SQL 用户自定义子类型

每行具有不同布局的Android ListView

延迟加载 UICollectionViewCell 的自定义子视图