java.lang.ClassCastException : android. widget.LinearLayout 无法转换为 android.widget

标签 java android android-layout casting

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

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { // <-- line 9
private String[] mDataset;


public static class MyViewHolder extends RecyclerView.ViewHolder {
    // each data item is just a string in this case
    public TextView textView;
    public MyViewHolder(View v) {
        super(v);
        textView = (TextView) v.findViewById(R.id.mTextView);
        this.textView = textView;
    }
}


public MyAdapter(String[] myDataset) {
    mDataset = myDataset;
}


@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent,
                                                 int viewType) {
    // create a new view
    TextView v = (TextView) LayoutInflater.from(parent.getContext())
            .inflate(R.layout.my_text_view, parent, false); // <-- line 36

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


@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    // - get element from your dataset at this position
    // - replace the contents of the view with that element
    holder.textView.setText(mDataset[position]);

}


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

}

这是 MyAdapter 类的代码,当我运行它时,应用程序一直关闭,所以我检查了 Logcat,它说

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.t5online.chat.hanbattalk, PID: 593
    java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
        at com.t5online.chat.hanbattalk.MyAdapter.onCreateViewHolder(MyAdapter.java:36)
        at com.t5online.chat.hanbattalk.MyAdapter.onCreateViewHolder(MyAdapter.java:9)

但是,我找不到第 36 行和第 9 行的问题所在。

最佳答案

您没有在 onCreateViewHolder 中正确膨胀 View 。应该是这样的,

 View view;
 LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
 view = layoutInflater.inflate(R.layout.my_text_view,parent,false);
 return new MyAdapter.MyViewHolder(view);

关于java.lang.ClassCastException : android. widget.LinearLayout 无法转换为 android.widget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61916281/

相关文章:

android - 单击应用程序图标打开抽屉导航

java - SQL 错误或丢失数据库( “?” : syntax error) 附近

java - Android:进度对话框错误 java.lang.NullPointerException

java - 将eclipse和android SDK转移到新电脑

android - 如何在微调器周围创建自定义微调器,如右侧向下三角形的边框?

android - 如何从具有 NestedScrollView 的 fragment 中的 AppBarLayout 禁用 "expand"?

android - 如何让SupportMapFragment不填满屏幕高度

java - ManyToMany Hibernate保存相关对象

java - 如何从 XSL 文件中调用 Java 函数?

android - context.obtainStyledAttributes() 中的 defStyleAttr 和 defStyleRes 有什么用?