我有一个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
。
我怎样才能做到这一点?
答案 0 :(得分:0)
首先,您可以像以前一样设置图像源。
其次,您可以将活动中的Data
传递给UserActivity
,如下所示:
修改您的Data
课程,实施Serializable
公共类数据实现Serializable {
在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);
}
});
在UserActivity
你可以检索它
Data receivedData = (Data) getIntent().getSerializableExtra("data");