Мой RecyclerView не работает после вставки этой строки myrv.setAdapter (myAdapter); - PullRequest
0 голосов
/ 25 сентября 2018

Я новичок в андроид студии.Я сталкиваюсь с проблемой, когда я помещаю эту строку кода, мое приложение не работает, иначе оно работает должным образом.Как я могу разобраться.

На самом деле я использую этот код для повторного использования.Я хочу разработать приложение, такое как покерная карта, которое включает Recyclerview.Итак, я использую это, чтобы использовать его в моем коде.Я буду очень признателен, если вы поможете мне создать приложение, например, Scrum Poker.

вот мой код

    package com.example.sg_dev003.recyclerview;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import org.w3c.dom.Text;
import java.util.List;

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {

    private Context mContext ;
    private List<Book> mData ;

    public RecyclerViewAdapter(Context mContext, List<Book> mData) {
        this.mContext = mContext;
        this.mData = mData;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view;
        LayoutInflater mInflator = LayoutInflater.from(mContext);
        view = mInflator.inflate(R.layout.cardview_item_book,parent,false);

        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

        holder.tv_book_title.setText(mData.get(position).getTitle());
        holder.img_book_thumbnail.setImageResource(mData.get(position).getThumbnail());

    }

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

    public static class MyViewHolder extends RecyclerView.ViewHolder{

        TextView tv_book_title;
        ImageView img_book_thumbnail;

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

            tv_book_title = (TextView) itemView.findViewById(R.id.book_title_id);
            img_book_thumbnail = (ImageView) itemView.findViewById(R.id.book_img_id);
        }
    }

}

Вот родственный класс Книги

package com.example.sg_dev003.recyclerview;

public class Book {

    private String Title;
    private String Category;
    private String Description;
    private int Thumbnail;

    public Book(){
    }

    public Book(String title, String category, String description, int thumbnail) {
        Title = title;
        Category = category;
        Description = description;
        Thumbnail = thumbnail;
    }

    public void setTitle(String title) {
        Title = title;
    }

    public void setCategory(String category) {
        Category = category;
    }

    public void setDescription(String description) {
        Description = description;
    }

    public void setThumbnail(int thumbnail) {
        Thumbnail = thumbnail;
    }

    public String getTitle() {
        return Title;
    }

    public String getCategory() {
        return Category;
    }

    public String getDescription() {
        return Description;
    }

    public int getThumbnail() {
        return Thumbnail;
    }
}

Код для основного класса приведен здесь

 package com.example.sg_dev003.recyclerview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;



import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    List<Book> lstBook;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lstBook = new ArrayList<>();
        lstBook.add(new Book("Blank card","Poker","Desc",R.drawable.blank));
        lstBook.add(new Book("Zero","Poker","Desc",R.drawable.zero));
        lstBook.add(new Book("Half","Poker","Desc",R.drawable.half));
        lstBook.add(new Book("One","Poker","Desc",R.drawable.one));
        lstBook.add(new Book("Two","Poker","Desc",R.drawable.two));
        lstBook.add(new Book("Three","Poker","Desc",R.drawable.three));
        lstBook.add(new Book("Five","Poker","Desc",R.drawable.five));
        lstBook.add(new Book("Eight","Poker","Desc",R.drawable.eight));
        lstBook.add(new Book("Thirteen","Poker","Desc",R.drawable.thirteen));
        lstBook.add(new Book("Twenty","Poker","Desc",R.drawable.twenty));
        lstBook.add(new Book("Forty","Poker","Desc",R.drawable.fourty));
        lstBook.add(new Book("Eighty","Poker","Desc",R.drawable.eighty));
        lstBook.add(new Book("Hundred","Poker","Desc",R.drawable.hundred));
        lstBook.add(new Book("Question","Poker","Desc",R.drawable.question));
        lstBook.add(new Book("Infinity","Poker","Desc",R.drawable.infinity));


        RecyclerView myrv = (RecyclerView) findViewById(R.id.recyclerview_id);
        RecyclerViewAdapter myAdapter = new RecyclerViewAdapter(this,lstBook);
        myrv.setLayoutManager(new GridLayoutManager(this,3));
        myrv.setAdapter(myAdapter);
        return;


    }
}
java.lang.ClassCastException: android.view.TextureView cannot be cast to android.widget.TextView 
at com.example.sg_dev003.recyclerview.RecyclerViewAdapter$MyViewHolder.(RecyclerViewAdapter.java:60) 
at com.example.sg_dev003.recyclerview.RecyclerViewAdapter.onCreateViewHolder(RecyclerViewAdapter.java:36) 
at com.example.sg_dev003.recyclerview.RecyclerViewAdapter.onCreateViewHolder(RecyclerViewAdapter.java:19) 
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6493) 
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5680) 
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563) 
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559) 
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229) 
at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:556) 
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516) 
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608) 
at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170) 
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693) 
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3410) 
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3962) 
at android.view.View.layout(View.java:15671) 
at android.view.ViewGroup.layout(ViewGroup.java:5038) 
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 
at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1692) 
at android.widget.LinearLayout.onLayout(LinearLayout.java:1468) 
at android.view.View.layout(View.java:15671) 
at android.view.ViewGroup.layout(ViewGroup.java:5038) 
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:514) 
at android.view.View.layout(View.java:15671) 
at android.view.ViewGroup.layout(ViewGroup.java:5038) 
at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:443) 
at android.view.View.layout(View.java:15671) 
at android.view.ViewGroup.layout(ViewGroup.java:5038) 
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:514) 
at android.view.View.layout(View.java:15671) 
at android.view.ViewGroup.layout(ViewGroup.java:5038) 
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 
at android.view.View.layout(View.java:15671) 
at android.view.ViewGroup.layout(ViewGroup.java:5038) 
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:514) 
at android.view.View.layout(View.java:15671) 
at android.view.ViewGroup.layout(ViewGroup.java:5038) 
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086) 
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843) 
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061) 
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885) 
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 
at android.view.Choreographer.doCallbacks(Choreographer.java:580) 
at android.view.Choreographer.doFrame(Choreographer.java:550) 
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5254) 

1 Ответ

0 голосов
/ 25 сентября 2018

Похоже, проблема в том, что ClassCastException происходит в этой строке:

tv_book_title = (TextView) itemView.findViewById(R.id.book_title_id);

Я думаю, вы случайно написали <TextureView> вместо <TextView> вваш R.layout.cardview_item_book файл макета.Перейдите в этот файл и найдите представление с android:id="@+id/book_title_id" и убедитесь, что это TextView, а не TextureView.

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