我是android studio的初学者。我面临的问题是,当我放置那行代码时,我的应用程序将无法正常运行,否则它将无法正常运行。我该如何解决呢?
实际上,我将此代码用于重用目的。我想开发一个包括Recyclerview的扑克卡之类的应用。因此,我正在使用它在我的代码中利用它。如果您能帮助我构建Scrum扑克牌之类的应用,我将不胜感激。
这是我的代码
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);
}
}
}
这里是相关的Book类
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)
答案 0 :(得分:1)
问题似乎是发生在此行上的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
。