Android:在RecyclerView中获取用户输入和显示

问题描述

如何获取用户输入并显示在“回收者视图”中

在“我的上一个活动”中,我获得了用户输入的项目名称,还可以在Gridview中选择“图像”,然后 想要将这些图像和商品名称传递到列表视图中

通过活动1传递用户输入

 done.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                String itemname = listname.getText().toString();
                if (!TextUtils.isEmpty(listname.getText().toString())) {

                    startActivity(new Intent(getContext(),CheckHome.class).putExtra("data",itemname).putExtra("image",imageRes));
                    dismiss();
                } else {
                    Toast.makeText(getContext(),"List Name not Empty ",Toast.LENGTH_SHORT).show();
                }

            }

        });

要在回收者视图中将用户输入和选定的图像显示到ListView中

public class CheckHome extends AppCompatActivity {

    ArrayList listimages;
    ArrayList listname;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_checkslate_home);

        // get the reference of RecyclerView
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        // set a linearlayoutmanager with default vertical orientation
        linearlayoutmanager linearlayoutmanager = new linearlayoutmanager(getApplicationContext());
        recyclerView.setLayoutManager(linearlayoutmanager);
        // call the constructor of CustomAdapter to send the reference and data to Adapter
        CustomAdapter customAdapter = new CustomAdapter(this,listname,listimages);
        recyclerView.setAdapter(customAdapter); // set the Adapter to RecyclerView
    }

    private class CustomAdapter extends RecyclerView.Adapter {


        ArrayList listimages;
        ArrayList listname;
        Context context;

        public CustomAdapter(Context context,ArrayList listimages,ArrayList listname ) {
            this.listimages = listimages;
            this.listname = listname;
            this.context = context;
        }

        @Override
        public RecyclerView.ViewHolder onCreateViewHolder( ViewGroup parent,int viewType) {

            // infalte the item Layout
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.rowlayout,parent,false);

            MyViewHolder vh = new MyViewHolder(v); // pass the view to View Holder
            return vh;

        }

        @Override
        public void onBindViewHolder( RecyclerView.ViewHolder holder,int position) {

                   //what to display Here 
        }

        @Override
        public int getItemCount() {
            return 0;
        }
    }

    private class MyViewHolder extends RecyclerView.ViewHolder {
        // init the item view's
        TextView name;
        ImageView image;
        TextView listcount;

        public MyViewHolder(View itemView) {
            super(itemView);
            // get the reference of item view's
            name = (TextView) itemView.findViewById(R.id.list_name);
            image = (ImageView) itemView.findViewById(R.id.image_list);
            listcount=itemView.findViewById(R.id.list_count);


        }
    }
}

解决方法

在Activity OnCreate()方法中,您可以像这样访问通过Intent传递的数据:

Bundle bundle = getIntent().getExtras();
if (bundle != null) {
String itemName= bundle.getString("data");
}

在这里,我得到String,但是您也可以传递String数组。您可以将此值传递给RecyclerAdapter类:

 CustomAdapter customAdapter = new CustomAdapter(this,listname,listimages);

但是不要通过意图传递大量数据。

,

而且getItemCount()不应为0。您必须将一些大小传递给它。 像modelList.size()