Как отобразить элементы карты, используя recylerview, фрагменты и viewmodel - PullRequest
0 голосов
/ 23 марта 2020

Посоветуйте, пожалуйста, как мне исправить эту ошибку

android .view.InflateException: двоичный файл XML строка файла № 10: двоичный файл XML строка файла № 10: ошибка раздувания класса android .support.v7.widget.CardView в android .view.LayoutInflater.inflate (LayoutInflater. java: 539) в android .view.LayoutInflater.inflate (LayoutInflater. java: 423) в com .example.cbf_corner.ui.home.ProductAdapter.onCreateViewHolder (ProductAdapter. java: 55) в com.example.cbf_corner.ui.home.ProductAdapter.onCreateViewHolder (ProductAdapter. java: 21)

1006 *
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <android.support.v7.widget.CardView

            android:layout_width="match_parent"
            android:layout_height="63dp"
            android:layout_margin="5dp">

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

                <ImageView
                    android:id="@+id/imageView"
                    android:layout_width="120dp"
                    android:layout_height="90dp"
                    android:padding="4dp" />

                <TextView
                    android:id="@+id/textViewTitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:layout_toRightOf="@id/imageView"
                    android:text="Apple MacBook Air Core i5 5th Gen - (8 GB/128 GB SSD/Mac OS Sierra)"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:textColor="#000000" />

                <TextView
                    android:id="@+id/textViewShortDesc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/textViewTitle"
                    android:layout_marginLeft="5dp"
                    android:layout_marginTop="5dp"
                    android:layout_toRightOf="@id/imageView"
                    android:text="13.3 Inch, 256 GB"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small" />

                <TextView
                    android:id="@+id/textViewRating"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/textViewShortDesc"
                    android:layout_marginLeft="5dp"
                    android:layout_marginTop="5dp"
                    android:layout_toRightOf="@id/imageView"
                    android:background="@color/colorPrimary"
                    android:paddingLeft="15dp"
                    android:paddingRight="15dp"
                    android:text="4.7"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small.Inverse"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/textViewPrice"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/textViewRating"
                    android:layout_marginLeft="5dp"
                    android:layout_marginTop="5dp"
                    android:layout_toRightOf="@id/imageView"
                    android:text="INR 56990"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
                    android:textStyle="bold" />

            </RelativeLayout>

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

    </LinearLayout>

Ответы [ 3 ]

0 голосов
/ 24 марта 2020

Вы положили /*Card details */ в xml? Если вы удалили его, и у вас больше не должно быть этой ошибки.

Чтобы комментировать в xml файлах, вам нужно использовать <!-- Card details -->

0 голосов
/ 28 марта 2020
    03/28 04:38:10: Launching 'app' on CBFcorner.
    $ adb shell am start -n "com.example.cbf_corner/com.example.cbf_corner.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
    Connected to process 3676 on device 'CBFcorner [emulator-5554]'.
    Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
    W/System: ClassLoader referenced unknown path: /data/app/com.example.cbf_corner-2/lib/x86
    W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
    I/art: Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>
        Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>
    D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
    D/: HostConnection::get() New Host Connection established 0xab293240, tid 3676
    D/: HostConnection::get() New Host Connection established 0xab293840, tid 3702
    I/OpenGLRenderer: Initialized EGL, version 1.4
    W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
    D/EGL_emulation: eglCreateContext: 0xaec546c0: maj 3 min 1 rcv 4
    D/EGL_emulation: eglMakeCurrent: 0xaec546c0: ver 3 1 (tinfo 0xaec52720)
    E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
        glUtilsParamSize: unknow param 0x00008cdf
        glUtilsParamSize: unknow param 0x00008824
    D/EGL_emulation: eglMakeCurrent: 0xaec546c0: ver 3 1 (tinfo 0xaec52720)
    D/AndroidRuntime: Shutting down VM


        --------- beginning of crash
    E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.cbf_corner, PID: 3676
        android.view.InflateException: Binary XML file line #6: Binary XML file line #6: Error inflating class android.support.v7.widget.CardView
            at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
            at com.example.cbf_corner.ui.home.ProductAdapter.onCreateViewHolder(ProductAdapter.java:41)
            at com.example.cbf_corner.ui.home.ProductAdapter.onCreateViewHolder(ProductAdapter.java:21)
            at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078)
            at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235)
            at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
            at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
            at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
            at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
            at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
            at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
            at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
            at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
            at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
            at android.view.View.layout(View.java:16630)
            at android.view.ViewGroup.layout(ViewGroup.java:5437)
            at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1915)
            at android.view.View.layout(View.java:16630)
            at android.view.ViewGroup.layout(ViewGroup.java:5437)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
            at android.view.View.layout(View.java:16630)
            at android.view.ViewGroup.layout(ViewGroup.java:5437)
            at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1915)
            at android.view.View.layout(View.java:16630)
            at android.view.ViewGroup.layout(ViewGroup.java:5437)
            at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:142)
            at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:41)
            at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1556)
            at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:888)
            at android.view.View.layout(View.java:16630)
            at android.view.ViewGroup.layout(ViewGroup.java:5437)
            at androidx.drawerlayout.widget.DrawerLayout.onLayout(DrawerLayout.java:1231)
            at android.view.View.layout(View.java:16630)
            at android.view.ViewGroup.layout(ViewGroup.java:5437)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
            at android.view.View.layout(View.java:16630)
            at android.view.ViewGroup.layout(ViewGroup.java:5437)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
            at android.view.View.layout(View.java:16630)
            at android.view.ViewGroup.layout(ViewGroup.java:5437)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
            at android.view.View.layout(View.java:16630)
            at android.view.ViewGroup.layout(ViewGroup.java:5437)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
            at android.view.View.layout(View.java:16630)
            at android.view.ViewGroup.layout(ViewGroup.java:543

package com.example.cbf_corner.ui.home;

import android.content.Context;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;


import com.example.cbf_corner.R;

import java.util.List;

/**
 * Created by Belal on 10/18/2017.
 */


public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ProductViewHolder> {


    //this context we will use to inflate the layout
    private Context mCtx;

    //we are storing all the products in a list
    private List<Product> productList;

    //getting the context and product list with constructor
    public ProductAdapter(Context mCtx, List<Product> productList) {
        this.mCtx = mCtx;
        this.productList = productList;
    }

    @Override
    public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //inflating and returning our view holder
        this.mCtx = parent.getContext();
        RecyclerView.ViewHolder vh;
        View view = LayoutInflater.from(mCtx).inflate(R.layout.layout_products,parent,false);
        vh = new ProductViewHolder(view);
        return (ProductViewHolder) vh;
       /* RecyclerView.ViewHolder vh = new RecyclerView.ViewHolder(view) {
            @Override
            public String toString() {
                return super.toString();
            }
        };*/

       // return new ProductViewHolder(view);
       /* LayoutInflater inflater = LayoutInflater.from(mCtx);
        View view = inflater.inflate(R.layout.layout_products, null);
        return new ProductViewHolder(view);*/
//       return new ProductViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_products,parent,false));
    }

    @Override
    public void onBindViewHolder(ProductViewHolder holder, int position) {
        //getting the product of the specified position
        Product product = productList.get(position);

        //binding the data with the viewholder views
        holder.textViewTitle.setText(product.getTitle());
        holder.textViewShortDesc.setText(product.getShortdesc());
        holder.textViewRating.setText(String.valueOf(product.getRating()));
        holder.textViewPrice.setText(String.valueOf(product.getPrice()));

        holder.imageView.setImageDrawable(mCtx.getResources().getDrawable(product.getImage()));

    }


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


    class ProductViewHolder extends RecyclerView.ViewHolder {

        TextView textViewTitle, textViewShortDesc, textViewRating, textViewPrice;
        ImageView imageView;

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

            textViewTitle = itemView.findViewById(R.id.textViewTitle);
            textViewShortDesc = itemView.findViewById(R.id.textViewShortDesc);
            textViewRating = itemView.findViewById(R.id.textViewRating);
            textViewPrice = itemView.findViewById(R.id.textViewPrice);
            imageView = itemView.findViewById(R.id.imageView);
        }
    }
}
0 голосов
/ 24 марта 2020

Спасибо за ваш ответ, ниже мой xml, который содержит cardView.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">


    /*Card details */

    <android.support.v7.widget.CardView

        android:layout_width="match_parent"
        android:layout_height="63dp"
        android:layout_margin="5dp">

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

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="120dp"
                android:layout_height="90dp"
                android:padding="4dp" />

            <TextView
                android:id="@+id/textViewTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_toRightOf="@id/imageView"
                android:text="Apple MacBook Air Core i5 5th Gen - (8 GB/128 GB SSD/Mac OS Sierra)"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                android:textColor="#000000" />

            <TextView
                android:id="@+id/textViewShortDesc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/textViewTitle"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="5dp"
                android:layout_toRightOf="@id/imageView"
                android:text="13.3 Inch, 256 GB"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small" />

            <TextView
                android:id="@+id/textViewRating"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/textViewShortDesc"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="5dp"
                android:layout_toRightOf="@id/imageView"
                android:background="@color/colorPrimary"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:text="4.7"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small.Inverse"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/textViewPrice"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/textViewRating"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="5dp"
                android:layout_toRightOf="@id/imageView"
                android:text="INR 56990"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
                android:textStyle="bold" />

        </RelativeLayout>

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

</LinearLayout>
...