Android can';单击cardview时无法打开新活动,但它仅显示toast
我正在使用Android can';单击cardview时无法打开新活动,但它仅显示toast,android,toast,android-cardview,Android,Toast,Android Cardview,我正在使用cardwiew在gridview中显示项目。我想打开一个新活动,但根据我的代码,它会显示关于项目位置的祝酒词。我没有达到我犯错误的地方,所以请帮助我。如蒙帮助,将不胜感激 DataModel.class public class DataModel { public String text; public int drawable; public String color; public DataModel(String t, int d, St
cardwiew
在gridview中显示项目。我想打开一个新活动,但根据我的代码,它会显示关于项目位置的祝酒词。我没有达到我犯错误的地方,所以请帮助我。如蒙帮助,将不胜感激
DataModel.class
public class DataModel {
public String text;
public int drawable;
public String color;
public DataModel(String t, int d, String c )
{
text=t;
drawable=d;
color=c;
}
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
ArrayList<DataModel> mValues;
Context mContext;
protected ItemListener mListener;
public RecyclerViewAdapter(Context context, ArrayList<DataModel> values, ItemListener itemListener) {
mValues = values;
mContext = context;
mListener=itemListener;
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView textView;
public ImageView imageView;
public RelativeLayout relativeLayout;
DataModel item;
public ViewHolder(View v) {
super(v);
v.setOnClickListener(this);
textView = (TextView) v.findViewById(R.id.textView);
imageView = (ImageView) v.findViewById(R.id.imageView);
relativeLayout = (RelativeLayout) v.findViewById(R.id.relativeLayout);
}
public void setData(DataModel item) {
this.item = item;
textView.setText(item.text);
imageView.setImageResource(item.drawable);
relativeLayout.setBackgroundColor(Color.parseColor(item.color));
}
@Override
public void onClick(View view) {
if (mListener != null) {
mListener.onItemClick(item);
}
}
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.recycler_view_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder Vholder, int position) {
Vholder.setData(mValues.get(position));
}
@Override
public int getItemCount() {
return mValues.size();
}
public interface ItemListener {
void onItemClick(DataModel item);
}
}
public class MainActivity extends AppCompatActivity implements RecyclerViewAdapter.ItemListener {
RecyclerView recyclerView;
ArrayList<DataModel> arrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
arrayList = new ArrayList<>();
arrayList.add(new DataModel("Item 1", R.drawable.downtoearth, "#FFFFFF"));
arrayList.add(new DataModel("Item 2", R.drawable.beer, "#3E51B1"));
arrayList.add(new DataModel("Item 3", R.drawable.ferrari, "#673BB7"));
arrayList.add(new DataModel("Item 4", R.drawable.jetpack_joyride, "#4BAA50"));
arrayList.add(new DataModel("Item 5", R.drawable.three_d, "#F94336"));
arrayList.add(new DataModel("Item 6", R.drawable.terraria, "#0A9B88"));
RecyclerViewAdapter adapter = new RecyclerViewAdapter(this, arrayList, this);
recyclerView.setAdapter(adapter);
/**
AutoFitGridLayoutManager that auto fits the cells by the column width defined.
**/
AutoFitGridLayoutManager layoutManager = new AutoFitGridLayoutManager(this, 300);
recyclerView.setLayoutManager(layoutManager);
/**
Simple GridLayoutManager that spans two columns
**/
GridLayoutManager manager = new GridLayoutManager(this, 2, GridLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(manager);
}
@Override
public void onItemClick(DataModel item) {
//here toast is
Toast.makeText(getApplicationContext(), item.text + " is clicked",
Toast.LENGTH_SHORT).show();
}
}
RecycleServiceAdapter.class
public class DataModel {
public String text;
public int drawable;
public String color;
public DataModel(String t, int d, String c )
{
text=t;
drawable=d;
color=c;
}
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
ArrayList<DataModel> mValues;
Context mContext;
protected ItemListener mListener;
public RecyclerViewAdapter(Context context, ArrayList<DataModel> values, ItemListener itemListener) {
mValues = values;
mContext = context;
mListener=itemListener;
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView textView;
public ImageView imageView;
public RelativeLayout relativeLayout;
DataModel item;
public ViewHolder(View v) {
super(v);
v.setOnClickListener(this);
textView = (TextView) v.findViewById(R.id.textView);
imageView = (ImageView) v.findViewById(R.id.imageView);
relativeLayout = (RelativeLayout) v.findViewById(R.id.relativeLayout);
}
public void setData(DataModel item) {
this.item = item;
textView.setText(item.text);
imageView.setImageResource(item.drawable);
relativeLayout.setBackgroundColor(Color.parseColor(item.color));
}
@Override
public void onClick(View view) {
if (mListener != null) {
mListener.onItemClick(item);
}
}
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.recycler_view_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder Vholder, int position) {
Vholder.setData(mValues.get(position));
}
@Override
public int getItemCount() {
return mValues.size();
}
public interface ItemListener {
void onItemClick(DataModel item);
}
}
public class MainActivity extends AppCompatActivity implements RecyclerViewAdapter.ItemListener {
RecyclerView recyclerView;
ArrayList<DataModel> arrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
arrayList = new ArrayList<>();
arrayList.add(new DataModel("Item 1", R.drawable.downtoearth, "#FFFFFF"));
arrayList.add(new DataModel("Item 2", R.drawable.beer, "#3E51B1"));
arrayList.add(new DataModel("Item 3", R.drawable.ferrari, "#673BB7"));
arrayList.add(new DataModel("Item 4", R.drawable.jetpack_joyride, "#4BAA50"));
arrayList.add(new DataModel("Item 5", R.drawable.three_d, "#F94336"));
arrayList.add(new DataModel("Item 6", R.drawable.terraria, "#0A9B88"));
RecyclerViewAdapter adapter = new RecyclerViewAdapter(this, arrayList, this);
recyclerView.setAdapter(adapter);
/**
AutoFitGridLayoutManager that auto fits the cells by the column width defined.
**/
AutoFitGridLayoutManager layoutManager = new AutoFitGridLayoutManager(this, 300);
recyclerView.setLayoutManager(layoutManager);
/**
Simple GridLayoutManager that spans two columns
**/
GridLayoutManager manager = new GridLayoutManager(this, 2, GridLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(manager);
}
@Override
public void onItemClick(DataModel item) {
//here toast is
Toast.makeText(getApplicationContext(), item.text + " is clicked",
Toast.LENGTH_SHORT).show();
}
}
尤贾纳班
公开课Yojana扩展了应用程序活动{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_yojana);
getIntent().getParcelableExtra("dataitem");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_yojana);
getIntent().getExtras().getString("dataitem");
}
日志错误:
Error:(56, 15) error: no suitable method found for
putExtra(String,DataModel)
method Intent.putExtra(String,boolean) is not applicable
(argument mismatch; DataModel cannot be converted to boolean)
method Intent.putExtra(String,byte) is not applicable
(argument mismatch; DataModel cannot be converted to byte)
method Intent.putExtra(String,char) is not applicable
(argument mismatch; DataModel cannot be converted to char)
method Intent.putExtra(String,short) is not applicable
(argument mismatch; DataModel cannot be converted to short)
method Intent.putExtra(String,int) is not applicable
(argument mismatch; DataModel cannot be converted to int)
method Intent.putExtra(String,long) is not applicable
(argument mismatch; DataModel cannot be converted to long)
method Intent.putExtra(String,float) is not applicable
(argument mismatch; DataModel cannot be converted to float)
method Intent.putExtra(String,double) is not applicable
(argument mismatch; DataModel cannot be converted to double)
method Intent.putExtra(String,String) is not applicable
(argument mismatch; DataModel cannot be converted to String)
method Intent.putExtra(String,CharSequence) is not applicable
(argument mismatch; DataModel cannot be converted to CharSequence)
method Intent.putExtra(String,Parcelable) is not applicable
(argument mismatch; DataModel cannot be converted to Parcelable)
method Intent.putExtra(String,Parcelable[]) is not applicable
(argument mismatch; DataModel cannot be converted to Parcelable[])
method Intent.putExtra(String,Serializable) is not applicable
(argument mismatch; DataModel cannot be converted to Serializable)
method Intent.putExtra(String,boolean[]) is not applicable
(argument mismatch; DataModel cannot be converted to boolean[])
method Intent.putExtra(String,double[]) is not applicable
(argument mismatch; DataModel cannot be converted to double[])
method Intent.putExtra(String,String[]) is not applicable
(argument mismatch; DataModel cannot be converted to String[])
method Intent.putExtra(String,CharSequence[]) is not applicable
(argument mismatch; DataModel cannot be converted to CharSequence[])
method Intent.putExtra(String,Bundle) is not applicable
(argument mismatch; DataModel cannot be converted to Bundle)
它显示toast,因为您编写了以下代码:
Toast.makeText(getApplicationContext(), item.text + " is clicked", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, NextActivity.class);
intent.putExtra("dataitem", item);
startActivity(intent);
相反,您应该编写以下代码:
Toast.makeText(getApplicationContext(), item.text + " is clicked", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, NextActivity.class);
intent.putExtra("dataitem", item);
startActivity(intent);
这将打开一个新活动。但是如何通过单击不同的CardView来打开不同的活动呢 @凌驾 公共链接(数据模型项){ 尤贾纳班 公开课Yojana扩展了应用程序活动{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_yojana);
getIntent().getParcelableExtra("dataitem");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_yojana);
getIntent().getExtras().getString("dataitem");
}
.getIntent().getExtras().getString(“dataitem”);我已在另一个活动中编写了此内容,但仍遇到错误。错误:(56,15)错误:找不到适合putExtra(String,DataModel)方法意图的方法。putExtra(String,boolean)不适用(参数不匹配;数据模型无法转换为布尔值)方法意图。putExtra(字符串,字节)不适用(参数不匹配;数据模型无法转换为字节)不,当您将整个对象发送到另一个活动时,请将您的Dataitem类设置为PARCELABLE,该类为您的类实现PARCELABLE接口。在下一个活动中,请执行此getIntent()。getParcelableExtra(“Dataitem”)@deadpool007现在如何打开不同的活动。如何对此设置条件,以便我可以打开不同的活动