android.widget.LinearLayout 不能转换为 android.widget.TextView at com.example.foodorderapp.Adapters.Order



我试图解决这个Bug在调试,但无法找到它的解决方案源代码链接:下载


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);
}
}

}

当我尝试运行应用程序工作正常,但具体在这个活动他们没有任何错误,但应用程序不能运行&当我调试应用程序,然后我得到这个错误java.lang.ClassCastException: android.widget.LinearLayout不能被转换为android.widget.TextView

源代码链接:下载

答案在这篇文章的错误/标题中。

问题:

它说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中删除idorderItemName,并将其分配给相应的TextView

然后,你的应用程序就可以工作了。

从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">

相关内容

最新更新