Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android can';单击cardview时无法打开新活动,但它仅显示toast_Android_Toast_Android Cardview - Fatal编程技术网

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现在如何打开不同的活动。如何对此设置条件,以便我可以打开不同的活动