Ошибка при попытке раздувать RecyclerView в Android - PullRequest
0 голосов
/ 06 апреля 2020

Прямо сейчас я пытаюсь получить изображение для отображения в RecyclerView на основе того, что вставлено, и я продолжаю получать эту ошибку. Я проверил строку, которая говорит: строка 12 в файле xml для streaming_row, и это начало просмотра карты. Я беру картинку из своей папки для рисования, и я попробовал пару разных способов, чтобы получить ее, но ни один не помог. Любые идеи, предложения или объяснения могут помочь, потому что я понятия не имею об этом.

Ошибка:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: edu.niu.students.z1790270.wheretostream, PID: 1724
    android.view.InflateException: Binary XML file line #12 in package.removed.bc.reasons:layout/streaming_row: Binary XML file line #12 in package.removed.bc.reasons:layout/streaming_row: Error inflating class <unknown>
    Caused by: android.view.InflateException: Binary XML file line #12 in package.removed.bc.reasons:layout/streaming_row: Error inflating class <unknown>
    Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:854)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
        at edu.niu.students.z1790270.wheretostream.streamingAdapter.onCreateViewHolder(streamingAdapter.java:33)
        at edu.niu.students.z1790270.wheretostream.streamingAdapter.onCreateViewHolder(streamingAdapter.java:15)
        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:22466)
        at android.view.ViewGroup.layout(ViewGroup.java:6304)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:22466)
        at android.view.ViewGroup.layout(ViewGroup.java:6304)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:22466)
        at android.view.ViewGroup.layout(ViewGroup.java:6304)
        at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:444)
        at android.view.View.layout(View.java:22466)
        at android.view.ViewGroup.layout(ViewGroup.java:6304)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:22466)
        at android.view.ViewGroup.layout(ViewGroup.java:6304)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:22466)
        at android.view.ViewGroup.layout(ViewGroup.java:6304)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at com.android.internal.policy.DecorView.onLayout(DecorView.java:779)
        at android.view.View.layout(View.java:22466)
        at android.view.ViewGroup.layout(ViewGroup.java:6304)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3157)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2614)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1745)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7768)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:967)
        at android.view.Choreographer.doCallbacks(Choreographer.java:791)
        at android.view.Choreographer.doFrame(Choreographer.java:726)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 2: TypedValue{t=0x2/d=0x7f030048 a=-1}
        at android.content.res.TypedArray.getColorStateList(TypedArray.java:597)
        at androidx.cardview.widget.CardView.<init>(CardView.java:127)
        at androidx.cardview.widget.CardView.<init>(CardView.java:117)
            ... 65 more

streamingActivity:

package package.removed.bc.reasons;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class streamingAdapter extends RecyclerView.Adapter<streamingAdapter.MyStreamingHolder>
{
    Context context;
    String goToUrl;
    String serviceAvailable;

    public streamingAdapter(Context ct, String url, String service)
    {
        context = ct;
        goToUrl = url;
        serviceAvailable = service;
    }

    @NonNull
    @Override
    public MyStreamingHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
    {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.streaming_row, parent, false);

        return new MyStreamingHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyStreamingHolder holder, int position)
    {
//        switch(serviceAvailable)
//        {
//            case "Netflix":
                holder.logo.setImageResource(context.getResources().getIdentifier("netflix", "drawable", context.getPackageName()));

//        }

//        holder.goToButton.setOnClickListener(new View.OnClickListener()
//        {
//            @Override
//            public void onClick(View v)
//            {
//                Uri uri = Uri.parse(goToUrl);
//                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
//                context.startActivity(intent);
//            }
//        });
    }

    @Override
    public int getItemCount()
    {
        return 1;
    }

    public class MyStreamingHolder extends RecyclerView.ViewHolder
    {
        ImageView logo;
        Button goToButton;
        public MyStreamingHolder(@NonNull View itemView)
        {
            super(itemView);

            logo = itemView.findViewById(R.id.streamingLogo);
            goToButton = itemView.findViewById(R.id.goToButton);
        }
    }
}

Редактировать: streaming_row. xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp"
    android:background="?attr/backgroundcolor">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:cardBackgroundColor="?attr/cardBackgroundColor">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/streamingLogo"
                android:layout_width="150dp"
                android:layout_height="100dp"
                android:layout_marginBottom="5dp"
                app:srcCompat="@drawable/temp_poster_image" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <Space
                    android:layout_width="match_parent"
                    android:layout_height="28dp" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <Space
                        android:layout_width="72dp"
                        android:layout_height="31dp" />

                    <Button
                        android:id="@+id/goToButton"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/watchHereButtonLabel" />
                </LinearLayout>

            </LinearLayout>

        </LinearLayout>

    </androidx.cardview.widget.CardView>
</LinearLayout>

1 Ответ

0 голосов
/ 07 апреля 2020

В итоге я ошибся, потому что использовал цвет, который не объявлял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...