首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安卓应用因RecyclerView而崩溃

安卓应用因RecyclerView而崩溃
EN

Stack Overflow用户
提问于 2018-06-27 04:59:46
回答 2查看 696关注 0票数 1

我正尝试在我的主屏幕活动中添加一个简单的RecyclerView,每个视图都包含水果的名称。在添加RecyclerView代码之前,我的应用运行良好。但在添加RecyclerView代码后,它开始崩溃。经过一些调试后,我知道当我为RecyclerView对象设置recyclerView适配器时,我的应用程序崩溃了。在这条语句中:list_container.setAdapter(list_container_adapter);

请在我可能出错的地方提供帮助。下面是提供的完整代码。

Mainscreen.java:

代码语言:javascript
复制
public class MainScreen extends AppCompatActivity {


private RecyclerView list_container;
private RecyclerView.Adapter list_container_adapter;
private RecyclerView.LayoutManager list_container_layout_manager;
private String[] fruits = {"Apple","Mango","Banana","Orange","Grapes","Cherry","Grapes","Pineapple","Stawberry","Litchi",
"Custard Apple","Plum","Peaches","Dragonfruit","Chickoo","Sweet Lime"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_screen);
    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
    toolbar.setTitle("");
    setSupportActionBar(toolbar);
    myView = findViewById(R.id.my_view);
    list_container = (RecyclerView)findViewById(R.id.list_container);
    list_container.setHasFixedSize(true);
    list_container_layout_manager = new LinearLayoutManager(this);
    list_container.setLayoutManager(list_container_layout_manager);
    list_container_adapter = new ListContainerAdapter(MainScreen.this,fruits);
    list_container.setAdapter(list_container_adapter);
}
}

ListContainerAdapter.java:

代码语言:javascript
复制
public class ListContainerAdapter extends RecyclerView.Adapter<ListContainerAdapter.MyViewHolder> {
private String[] mDataset;
private Context context;
public static class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView mTextView;
    public MyViewHolder(TextView v) {
        super(v);
        mTextView = (TextView) v.findViewById(R.id.texttemp);
    }
}

public ListContainerAdapter(Context context, String[] myDataset) {
    this.context = context;
    mDataset = myDataset;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,
                                               int viewType) {

    TextView v = (TextView) LayoutInflater.from(parent.getContext())
            .inflate(R.layout.list_container_element, parent, true);

    MyViewHolder vh = new MyViewHolder(v);
    return vh;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    holder.mTextView.setText(mDataset[position]);

}

@Override
public int getItemCount() {
    return mDataset.length;
}
}

build.gradle:

代码语言:javascript
复制
    apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.bismuth.deadline"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:support-v4:27.1.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'
}

堆栈跟踪

代码语言:javascript
复制
06-27 02:34:07.906 2711-2711/com.bismuth.deadline E/AndroidRuntime: 
FATAL EXCEPTION: main Process: com.bismuth.deadline, PID: 2711 
java.lang.ClassCastException: android.support.v7.widget.RecyclerView 
cannot be cast to android.widget.TextView at com.bismuth.deadline.ListContainerAdapter.onCreateViewHolder(ListContainerAdapter.java:30) at com.bismuth.deadline.ListContainerAdapter.onCreateViewHolder(ListContainerAdapter.java:9)

list_container_element.xml:

代码语言:javascript
复制
    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:paddingTop="20dp"
        android:paddingBottom="20dp"
        android:paddingStart="10dp"
        android:paddingEnd="10dp"
        android:textSize="25dp"
        android:id="@+id/texttemp"
        android:gravity="center" />
</LinearLayout>
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51051291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档