android.widget.LinearLayout 无法在 com.example.foodorderapp.Adapters.OrdersAdapter$viewHolder.<init> 上转换为 android.widget.TextView
android.widget.LinearLayout cannot be cast to android.widget.TextView at com.example.foodorderapp.Adapters.OrdersAdapter$viewHolder.<init>
我试图在调试时解决这个错误,但找不到解决方案
源代码 Link: Download
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.foodorderapp.Models.OrdersModel;
import com.example.foodorderapp.R;
import java.util.ArrayList;
public class OrdersAdapter extends RecyclerView.Adapter<OrdersAdapter.viewHolder>
{
ArrayList<OrdersModel> list;
Context context;
public OrdersAdapter(ArrayList<OrdersModel> list, Context context) {
this.list = list;
this.context = context;
}
@NonNull
@Override
public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
View view= LayoutInflater.from(context).inflate(R.layout.order_sample,parent,false);
return new viewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull viewHolder holder, int position) {
final OrdersModel model=list.get(position);
holder.orderImage.setImageResource(model.getOrderImage());
holder.soldItemName.setText(model.getSoldItemName());
holder.orderNumber.setText(model.getOrderNumber());
holder.price.setText(model.getPrice());
}
@Override
public int getItemCount()
{
return list.size();
}
public class viewHolder extends RecyclerView.ViewHolder {
ImageView orderImage;
TextView soldItemName,orderNumber,price;
public viewHolder(@NonNull View itemView) {
super(itemView);
orderImage=itemView.findViewById(R.id.orderImage);
soldItemName=itemView.findViewById(R.id.orderItemName);
orderNumber=itemView.findViewById(R.id.orderNumber);
price=itemView.findViewById(R.id.orderPrice);
}
}
}
当我尝试 运行 应用程序正常工作但具体在这 Activity 他们没有任何错误但应用程序不能 运行 & 当我调试应用程序然后我得到这个错误java.lang.ClassCastException: android.widget.LinearLayout 无法转换为 android.widget.TextView
源码Link: Download
从 Linearlayout 中删除 ID 并添加到您的 textview-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
**android:id="@+id/orderItemName"** //REMOVE THIS and add to your TEXTVIEW
android:layout_width="match_parent"
android:layout_height="120dp"
android:orientation="vertical"
android:padding="1dp">
答案在这个post的error/title中。
问题:
它说 LinearLayout
不能转换为 TextView
,这意味着在您的代码中某处,您正在尝试使用 LinearLayout
并将其转换为 TextView
这本质上是错误的,因为 LinearLayout
不能用于 TextView
.
原因:
这是您在 order_sample.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"
android:id="@+id/orderItemName"
...>
...
</LinearLayout>
您已经给这个 LinearLayout
一个名为 orderItemName
的 ID。
但是,在您的适配器 viewHolder
中,您正试图在此处将此 LinearLayout
设置为 TextView
:
TextView soldItemName;
...
soldItemName=itemView.findViewById(R.id.orderItemName);
解决方案:
从 LinearLayout
中删除 ID orderItemName
并将其分配给相应的 TextView
.
而且,您的应用程序将正常运行。
我试图在调试时解决这个错误,但找不到解决方案 源代码 Link: Download
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.foodorderapp.Models.OrdersModel;
import com.example.foodorderapp.R;
import java.util.ArrayList;
public class OrdersAdapter extends RecyclerView.Adapter<OrdersAdapter.viewHolder>
{
ArrayList<OrdersModel> list;
Context context;
public OrdersAdapter(ArrayList<OrdersModel> list, Context context) {
this.list = list;
this.context = context;
}
@NonNull
@Override
public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
View view= LayoutInflater.from(context).inflate(R.layout.order_sample,parent,false);
return new viewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull viewHolder holder, int position) {
final OrdersModel model=list.get(position);
holder.orderImage.setImageResource(model.getOrderImage());
holder.soldItemName.setText(model.getSoldItemName());
holder.orderNumber.setText(model.getOrderNumber());
holder.price.setText(model.getPrice());
}
@Override
public int getItemCount()
{
return list.size();
}
public class viewHolder extends RecyclerView.ViewHolder {
ImageView orderImage;
TextView soldItemName,orderNumber,price;
public viewHolder(@NonNull View itemView) {
super(itemView);
orderImage=itemView.findViewById(R.id.orderImage);
soldItemName=itemView.findViewById(R.id.orderItemName);
orderNumber=itemView.findViewById(R.id.orderNumber);
price=itemView.findViewById(R.id.orderPrice);
}
}
}
当我尝试 运行 应用程序正常工作但具体在这 Activity 他们没有任何错误但应用程序不能 运行 & 当我调试应用程序然后我得到这个错误java.lang.ClassCastException: android.widget.LinearLayout 无法转换为 android.widget.TextView
源码Link: Download
从 Linearlayout 中删除 ID 并添加到您的 textview-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
**android:id="@+id/orderItemName"** //REMOVE THIS and add to your TEXTVIEW
android:layout_width="match_parent"
android:layout_height="120dp"
android:orientation="vertical"
android:padding="1dp">
答案在这个post的error/title中。
问题:
它说 LinearLayout
不能转换为 TextView
,这意味着在您的代码中某处,您正在尝试使用 LinearLayout
并将其转换为 TextView
这本质上是错误的,因为 LinearLayout
不能用于 TextView
.
原因:
这是您在 order_sample.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"
android:id="@+id/orderItemName"
...>
...
</LinearLayout>
您已经给这个 LinearLayout
一个名为 orderItemName
的 ID。
但是,在您的适配器 viewHolder
中,您正试图在此处将此 LinearLayout
设置为 TextView
:
TextView soldItemName;
...
soldItemName=itemView.findViewById(R.id.orderItemName);
解决方案:
从 LinearLayout
中删除 ID orderItemName
并将其分配给相应的 TextView
.
而且,您的应用程序将正常运行。