Android 如何在具有自动高度的回收器父级中创建回收器视图子级
我尝试了很多方法,但仍然没有找到合适的解决办法。我们希望任何人都能在这里帮助我们。多谢各位 我的父XML: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
<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);
}
}