在RecyclerView中出现问题

时间:2016-04-29 07:44:30

标签: android android-recyclerview android-adapter

我开始使用android编程,当我尝试将数据从我的适配器发送到另一个活动时遇到了问题 。 我想展示" description"的内容在我点击某个项目的其他活动中。

MyAdapter类:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

    private final List<FakeNews> list = FakeNewsList.all;

    @Override
    public int getItemCount() {
        return list.size();
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.list_cell, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        FakeNews pair = list.get(position);
        holder.display(pair);
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        private final TextView name;
        private final TextView description;

        private FakeNews currentPair;

        public MyViewHolder(final View itemView) {
            super(itemView);

            name = ((TextView) itemView.findViewById(R.id.name));
            description = ((TextView) itemView.findViewById(R.id.description));

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    Intent intent =  new Intent(MyViewHolder.this ,Affich.class);
                    intent.putExtra("description", String.valueOf((description)));
                    startActivity(intent);



                }
            });
        }

        public void display(FakeNews pair) {
            currentPair = pair;
            name.setText(pair.title);

        }
    }

}

有人能帮助我吗?

3 个答案:

答案 0 :(得分:0)

ContextActivity实例传递到适配器类。

然后在启动新Activity并假设实例变量为mContext时使用这样 -

Intent intent =  new Intent(mContext ,Affich.class);
intent.putExtra("description", String.valueOf((description)));
mContext.startActivity(intent);

答案 1 :(得分:0)

我认为您并不想将TextView传递给下一个活动,而是将其显示在其中。此外,您需要将Context传递给Intent,startActivity()是一种活动方法,因此您需要在上下文中调用它:

    itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent =  new Intent(view.getContext() ,Affich.class);
            intent.putExtra("description", description.getText().toString());
            view.getContext().startActivity(intent);
        }
    });

答案 2 :(得分:0)

要将TextView的值传递给您的新活动,请执行以下操作:

intent.putExtra("description", description.getText().toString());

关于新活动,请使用以下方式获取说明值:

String descriptionValue = getIntent().getStringExtra("description");