Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在具有自动高度的回收器父级中创建回收器视图子级_Android_Height_Android Recyclerview - Fatal编程技术网

Android 如何在具有自动高度的回收器父级中创建回收器视图子级

Android 如何在具有自动高度的回收器父级中创建回收器视图子级,android,height,android-recyclerview,Android,Height,Android Recyclerview,我尝试了很多方法,但仍然没有找到合适的解决办法。我们希望任何人都能在这里帮助我们。多谢各位 我的父XML: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" a

我尝试了很多方法,但仍然没有找到合适的解决办法。我们希望任何人都能在这里帮助我们。多谢各位

我的父XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context="com.bbisno.quanlybaicatv2.ui.baicat.BaiCatFragment">

<!-- TODO: Update blank fragment layout -->
<android.support.v7.widget.RecyclerView
    android:id="@+id/mRVBaiCat"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical">

</android.support.v7.widget.RecyclerView>

当我设置子xml cardview->android:layout\u height=“wrap\u content”时,子项显示错误的位置,我得到以下结果:

如何使recyclerview子级自动调整高度?谁来帮帮我

我想显示与此照片相同的界面:

第二张图片有什么问题(当您在cardview上设置android:layout\u height=“wrap\u content”时),您能发布一张您想要的正确布局的图片吗?
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    card_view:cardCornerRadius="4dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="16dp">

        <ImageView
            android:id="@+id/imageView6"
            android:layout_width="24dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/ic_menu_baicat" />

        <TextView
            android:id="@+id/tvTenBaiCat_baicat"
            android:layout_width="wrap_content"
            android:layout_height="48dp"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="16dp"
            android:layout_toEndOf="@+id/imageView6"
            android:text="New Text"
            android:textAppearance="@style/TextAppearance.AppCompat.Body2" />

        <Switch
            android:id="@+id/switch_baicat"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true"
            android:checked="false" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignEnd="@+id/switch_baicat"
            android:layout_below="@+id/imageView6"
            android:src="@drawable/line_divider" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/mRVListVatLieu_BaiCat"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/tvTenBaiCat_baicat">

        </android.support.v7.widget.RecyclerView>
    </RelativeLayout>
</android.support.v7.widget.CardView>
public class BaiCatAdapter extends FirebaseRecyclerAdapter<BaiCat, BaiCatAdapter.ViewHolder> {
private Context mContext;
private ArrayList<VatLieu> listItemVLChild;
private ListVLAdapterSimple listVLAdapterChild;


public BaiCatAdapter(android.content.Context context, Class<BaiCat> modelClass, int modelLayout, Class<ViewHolder> viewHolderClass, Firebase ref) {
    super(modelClass, modelLayout, viewHolderClass, ref);
    this.mContext = context;


}

@Override
protected void populateViewHolder(final BaiCatAdapter.ViewHolder viewHolder, BaiCat baiCat, int i) {
    System.out.println(baiCat.getTenBaiCat().toString());

    viewHolder.statusBC.setChecked(baiCat.isStatus());
    viewHolder.tvNameBC.setText("Bãi " + baiCat.getTenBaiCat().toString());


    listItemVLChild = new ArrayList<VatLieu>();
    listVLAdapterChild = new ListVLAdapterSimple(listItemVLChild);

    // lấy list giá của bãi cát
    Firebase mRef = new Firebase(Constant.REFBAICAT).child(baiCat.getTenBaiCat().toString()).child("listGiaBan/");
    //if != null là có list giá vật liệu
    mRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //kiem tra if có list giá vatlieu thì mới lấy data về
            if (dataSnapshot.hasChildren()) {
                GenericTypeIndicator<HashMap<String, Object>> t = new GenericTypeIndicator<HashMap<String, Object>>() {
                };
                HashMap<String, Object> list = dataSnapshot.getValue(t);
                Set<Map.Entry<String, Object>> entrySet = list.entrySet();
                // duyệt qua các phần tử để lấy key giá vật liệu

                for (Map.Entry entry : entrySet) {
                    System.out.println("Entry key: " + entry.getKey());

                    Firebase refGiaItem = new Firebase(Constant.REFVATLIEU).child(entry.getKey().toString());
                    refGiaItem.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            VatLieu vatLieu = dataSnapshot.getValue(VatLieu.class);
                            System.out.println("vatLieu: " + vatLieu.getGiaVL());
                            listItemVLChild.add(vatLieu);
                            listVLAdapterChild.notifyDataSetChanged();

                        }

                        @Override
                        public void onCancelled(FirebaseError firebaseError) {

                        }
                    });

                }


            }

        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

    viewHolder.mRVListVatLieu.setAdapter(listVLAdapterChild);
    listVLAdapterChild.notifyDataSetChanged();

}

public static class ViewHolder extends RecyclerView.ViewHolder {
    //        View view;
    Switch statusBC;
    TextView tvNameBC;
    RecyclerView mRVListVatLieu;

    public ViewHolder(View itemView) {
        super(itemView);

        statusBC = (Switch) itemView.findViewById(R.id.switch_baicat);
        tvNameBC = (TextView) itemView.findViewById(R.id.tvTenBaiCat_baicat);
        mRVListVatLieu = (RecyclerView) itemView.findViewById(R.id.mRVListVatLieu_BaiCat);
        mRVListVatLieu.setHasFixedSize(false);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(itemView.getContext(), LinearLayoutManager.VERTICAL, false);
        layoutManager.setAutoMeasureEnabled(true);

        mRVListVatLieu.setLayoutManager(layoutManager);
        mRVListVatLieu.addItemDecoration(new DividerItemDecoration(itemView.getContext(), RecyclerView.VERTICAL));


    }
}
public class ListVLAdapterSimple extends RecyclerView.Adapter<ListVLAdapterSimple.ViewHolder> {
private List<VatLieu> listVLofBaiCat;

public ListVLAdapterSimple(List<VatLieu> listVLofBaiCat) {
    this.listVLofBaiCat = listVLofBaiCat;
}

@Override
public ListVLAdapterSimple.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_item_vatlieu,parent,false);
    ViewHolder vh = new ViewHolder(view);
    return vh;
}

@Override
public void onBindViewHolder(ListVLAdapterSimple.ViewHolder holder, int position) {
    VatLieu vl = listVLofBaiCat.get(position);
    holder.tvsNameVl.setText(vl.getsNameVL());
    holder.tvlNameVl.setText(vl.getlNameVL());
    holder.tvGiaVl.setText(String.valueOf(vl.getGiaVL()));
    if(vl.isLaGiaBan()){
        holder.imgGiaVL.setImageResource(R.drawable.ic_ban);
    }else holder.imgGiaVL.setImageResource(R.drawable.ic_mua);


}

@Override
public int getItemCount() {
    return listVLofBaiCat.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{
    TextView tvsNameVl;
    TextView tvlNameVl;
    TextView tvGiaVl;
    ImageView imgGiaVL;
    Switch statusVL;
    public ViewHolder(View itemView) {
        super(itemView);
        tvsNameVl = (TextView) itemView.findViewById(R.id.tvSName_vatlieu);
        tvlNameVl= (TextView) itemView.findViewById(R.id.tvLName_vatlieu);
        tvGiaVl = (TextView) itemView.findViewById(R.id.tvGia_listvatlieu_addedit_baicat);
        imgGiaVL= (ImageView) itemView.findViewById(R.id.img_isGiaBan_vatlieu);
        statusVL = (Switch) itemView.findViewById(R.id.switch_listvatlieu_addedit_baicat);
    }
}