java.lang.ClassCastException:android.widget.RelativeLayout不能强制转换为android.support.v7.widget.RecyclerView
每当用户单击我的RecyclerView项目时,我都会尝试启动一个新活动。这就是我的活动的外观,其中我的日志显示了错误java.lang.ClassCastException:android.widget.RelativeLayout不能强制转换为android.support.v7.widget.RecyclerView,android,android-recyclerview,onclicklistener,classcastexception,android-logcat,Android,Android Recyclerview,Onclicklistener,Classcastexception,Android Logcat,每当用户单击我的RecyclerView项目时,我都会尝试启动一个新活动。这就是我的活动的外观,其中我的日志显示了错误 package com.example.nikit.phyprac4.ui; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayou
package com.example.nikit.phyprac4.ui;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.example.nikit.phyprac4.R;
import com.example.nikit.phyprac4.adapter.ListAdapter;
import com.example.nikit.phyprac4.model.ListData;
import com.example.nikit.phyprac4.model.ListItem;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ListAdapter listAdapter;
private ArrayList myData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myData=(ArrayList) ListData.getListData();
recyclerView=(RecyclerView)findViewById(R.id.ReList);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
listAdapter=new ListAdapter(myData,this);
recyclerView.setAdapter(listAdapter);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.nikit.phyprac4.ui.MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/ReList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
请也看看我的适配器
package com.example.nikit.phyprac4.adapter;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.nikit.phyprac4.R;
import com.example.nikit.phyprac4.model.ListItem;
import com.example.nikit.phyprac4.ui.FirstActivity;
import com.example.nikit.phyprac4.ui.MainActivity;
import com.example.nikit.phyprac4.ui.SecondActivity;
import java.util.List;
/**
* Created by nikit on 11/3/17.
*/
public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ListHolder> {
private List<ListItem> ListData;
private LayoutInflater inflater;
private Context context;
//private Button load;
public ListAdapter(List<ListItem>ListData, Context c)
{
this.inflater=LayoutInflater.from(c);
this.ListData=ListData;
}
@Override
public ListHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=inflater.inflate(R.layout.list_item,parent,false);
return new ListHolder(view);
}
@Override
public void onBindViewHolder(ListHolder holder, int position) {
ListItem item=ListData.get(position);
holder.title.setText(item.getTitle());
holder.icon.setImageResource(item.getImageResId());
}
@Override
public int getItemCount() {
return ListData.size();
}
class ListHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private TextView title;
private ImageView icon;
private View container;
public ListHolder(View itemView) {
super(itemView);
title=(TextView)itemView.findViewById(R.id.lbl_item_text);
icon=(ImageView)itemView.findViewById(R.id.im_item_icon);
container=itemView.findViewById(R.id.cont_item_root);
context = itemView.getContext();
//load=(Button)itemView.findViewById(R.id.btn_card_load);
container.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId()==R.id.cont_item_root)
{
final Intent intent;
switch (getAdapterPosition()){
case 0:
intent = new Intent(context, FirstActivity.class);
break;
case 1:
intent = new Intent(context, SecondActivity.class);
break;
default:
intent = new Intent(context, MainActivity.class);
break;
}
context.startActivity(intent);
}
}
}
}
只要FirstActivity和SecondActivity为空,应用程序就可以正常工作,但一旦我在其中放入文本视图,应用程序就会崩溃
请帮帮我。我是一名业余开发人员。评论这一行myData=ArrayList ListData.getListData;
在MainActivity中解决了这个问题,当然在list adapter中,我们将传递ListData.getListData而不是myDatashow your activity\u main。xml@shmakova我已经编辑了代码并添加了activity_main.xml,请看一看
package com.example.nikit.phyprac4.adapter;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.nikit.phyprac4.R;
import com.example.nikit.phyprac4.model.ListItem;
import com.example.nikit.phyprac4.ui.FirstActivity;
import com.example.nikit.phyprac4.ui.MainActivity;
import com.example.nikit.phyprac4.ui.SecondActivity;
import java.util.List;
/**
* Created by nikit on 11/3/17.
*/
public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ListHolder> {
private List<ListItem> ListData;
private LayoutInflater inflater;
private Context context;
//private Button load;
public ListAdapter(List<ListItem>ListData, Context c)
{
this.inflater=LayoutInflater.from(c);
this.ListData=ListData;
}
@Override
public ListHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=inflater.inflate(R.layout.list_item,parent,false);
return new ListHolder(view);
}
@Override
public void onBindViewHolder(ListHolder holder, int position) {
ListItem item=ListData.get(position);
holder.title.setText(item.getTitle());
holder.icon.setImageResource(item.getImageResId());
}
@Override
public int getItemCount() {
return ListData.size();
}
class ListHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private TextView title;
private ImageView icon;
private View container;
public ListHolder(View itemView) {
super(itemView);
title=(TextView)itemView.findViewById(R.id.lbl_item_text);
icon=(ImageView)itemView.findViewById(R.id.im_item_icon);
container=itemView.findViewById(R.id.cont_item_root);
context = itemView.getContext();
//load=(Button)itemView.findViewById(R.id.btn_card_load);
container.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId()==R.id.cont_item_root)
{
final Intent intent;
switch (getAdapterPosition()){
case 0:
intent = new Intent(context, FirstActivity.class);
break;
case 1:
intent = new Intent(context, SecondActivity.class);
break;
default:
intent = new Intent(context, MainActivity.class);
break;
}
context.startActivity(intent);
}
}
}
}