将数据添加到ImageView以便稍后使用onClick进行检索

时间:2017-01-17 03:14:49

标签: android android-layout android-intent android-activity

我有一个ImageView的布局,如下所示:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/image"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@color/blue" />

</LinearLayout>

此布局在我的RecyclerView中使用。这是布局的适配器:

public class LayoutAdapter extends RecyclerView.Adapter<LayoutAdapter.ViewHolder> {
    private Context context;

    private List<Data> data;

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public ImageView image;

        public ViewHolder(View v) {
            super(v);

            image = (ImageView) v.findViewById(R.id.image);
        }
    }

    public LayoutAdapter(Context context, List<Data> data) {
        this.context = context;
        this.data = data;
    }

    @Override
    public LayoutAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.main_layout, parent, false);

        ViewHolder vh = new ViewHolder(v);

        return vh;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, int position) {
        Data data = data.get(position);

        // TODO: bind data.getUser() to image
        // data.getUser() returns the User model object

        // starts new activity, need to pass image getUser() data to the activity
        holder.image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context, UserActivity.class);
                context.startActivity(intent);
            }
        });
    }

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

我需要做的事情(如代码中所述)是将数据添加到ImageView,以便我可以在点击图片时将该数据传递给UserActivity

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

首先,您可以像以前一样设置图像源。

其次,您可以将活动中的Data传递给UserActivity,如下所示:

  1. 修改您的Data课程,实施Serializable

    公共类数据实现Serializable {

  2. {li}

    onClick方法

    最终数据数据= data.get(position);

        // TODO: bind data.getUser() to image
        // data.getUser() returns the User model object
    
        // starts new activity, need to pass image getUser() data to the activity
        holder.image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context, UserActivity.class);
                intent .putExtra("data", data);
                context.startActivity(intent);
            }
        });
    
  3. UserActivity你可以检索它

    Data receivedData = (Data) getIntent().getSerializableExtra("data");