多次包含相同的布局(包含回收者视图)

时间:2019-08-05 15:50:23

标签: java android android-recyclerview android-include

我决定制作一个电子商务商店应用程序,我想包括两个或多个相同的布局,其中包含一个回收站视图,该视图从Java代码中获取数据(目前)。

我试图为它们两个添加不同的ID,但我看不到产品

我要包含的布局(horizo​​ntal_scroll_layout.xml):

<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_margin="8dp"
android:paddingBottom="8dp"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
    android:id="@+id/horizontal_scroll_layout_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:text="Most Popular"
    android:fontFamily="@font/cera_pro_medium"
    android:textColor="#000000"
    android:textAlignment="center"
    android:textSize="17dp"
 app:layout_constraintBottom_toBottomOf="@+id/horizontal_scroll_view_more"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/horizontal_scroll_view_more" />

<TextView
    android:id="@+id/horizontal_scroll_view_more"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="16dp"
    android:fontFamily="@font/cera_pro_regular"
    android:text="View More"
    android:textColor="@color/colorPrimary"
    android:textSize="14dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/horizontal_product_recycler_view"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/horizontal_scroll_view_more" />
</androidx.constraintlayout.widget.ConstraintLayout>

我在做什么(fragment_home.xml):

        <LinearLayout
           android:id="@+id/linearLayout2"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           app:layout_constraintEnd_toEndOf="parent"
           app:layout_constraintStart_toStartOf="parent"
           app:layout_constraintTop_toBottomOf="@+id/linearLayout">

            <include android:id="@+id/test1" 
                     layout="@layout/horrizontal_scroll_layout" />


        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/linearLayout">

            <include
                android:id="@+id/test2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                layout="@layout/horrizontal_scroll_layout" />


         </LinearLayout>

Java文件代码(HomeFragment.java):

 //////////// HS Product Layout (HS = Horizontal Scroll)

    hSlayoutTextView = view.findViewById(R.id.horizontal_scroll_layout_title);
    hSViewMoreTextView = view.findViewById(R.id.horizontal_scroll_view_more);
    hSRecyclerView = view.findViewById(R.id.horizontal_product_recycler_view);

    List<HorizontalProductScrollModel> horizontalProductScrollModelList = new ArrayList<>();

    horizontalProductScrollModelList.add(new HorizontalProductScrollModel(R.drawable.brd, "₹35", "₹40", "English Oven Premium \n" + "Sandwich Bread", "350 g"));
    .
    .
    .
    .
    .
    horizontalProductScrollModelList.add(new HorizontalProductScrollModel(R.drawable.brd, "₹35", "₹40", "English Oven Premium \n" + "Sandwich Bread", "350 g"));



    HorizontalProductScrollAdapter horizontalProductScrollAdapter = new HorizontalProductScrollAdapter(horizontalProductScrollModelList);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
    linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
    hSRecyclerView.setLayoutManager(linearLayoutManager);
    hSRecyclerView.setAdapter(horizontalProductScrollAdapter);

    horizontalProductScrollAdapter.notifyDataSetChanged();

    /////// HS Product Layout

适配器类(Horizo​​ntalProductScrollAdapter.java)

公共类Horizo​​ntalProductScrollAdapter扩展了RecyclerView.Adapter {

private List<HorizontalProductScrollModel> horizontalProductScrollModelList;

public HorizontalProductScrollAdapter(List<HorizontalProductScrollModel> horizontalProductScrollModelList) {
    this.horizontalProductScrollModelList = horizontalProductScrollModelList;
}

@NonNull
@Override
public HorizontalProductScrollAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.horizontal_scroll_item_layout, viewGroup, false);

    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull HorizontalProductScrollAdapter.ViewHolder viewHolder, int position) {


    int resource = horizontalProductScrollModelList.get(position).getProductImage();
    String price = horizontalProductScrollModelList.get(position).getProductPrice();
    String mrp = horizontalProductScrollModelList.get(position).getProductMRP();
    String name = horizontalProductScrollModelList.get(position).getProductName();
    String weight = horizontalProductScrollModelList.get(position).getProductWeight();

    viewHolder.setProductImage(resource);
    viewHolder.setProductPrice(price);
    viewHolder.setProductMRP(mrp);
    viewHolder.setProductName(name);
    viewHolder.setProductWeight(weight);

}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    private ImageView productImage;
    private TextView productPrice;
    private TextView productMRP;
    private TextView productName;
    private TextView productWeight;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        productImage = itemView.findViewById(R.id.hs_product_image);
        productPrice = itemView.findViewById(R.id.hs_product_price);
        productMRP = itemView.findViewById(R.id.hs_product_mrp);
        productName = itemView.findViewById(R.id.hs_product_name);
        productWeight = itemView.findViewById(R.id.hs_product_weight);

    }

    private void setProductImage(int resource){
        productImage.setImageResource(resource);

    }
    private void setProductPrice(String price){
        productPrice.setText(price);

    }

    private void setProductMRP(String mrp) {
        productMRP.setText(mrp);
    }

    private void setProductName(String name) {
        productName.setText(name);
    }

    private void setProductWeight(String weight) {
        productWeight.setText(weight);
    }
}

}

我看到了两个文本视图,但没有看到任何产品。为了更好地参考我要实现的目标,我在下面的两个屏幕快照中添加了一个链接:

我得到的是:https://snag.gy/uKfVT4.jpg 我想要的是:https://snag.gy/n2GHyg.jpg

编辑:日志显示此E / RecyclerView:未连接适配器;跳过布局 我在哪里附上它?

0 个答案:

没有答案