【问题标题】:Add data to ImageView to retrieve later with onClick将数据添加到 ImageView 以便稍后使用 onClick 检索
【发布时间】:2017-01-17 03:14:48
【问题描述】:

我有一个带有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

我怎样才能做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

    其次,您可以像这样将Data 从您的活动传递给UserActivity

    1. 编辑你的Data 类,实现Serializable

      公共类数据实现可序列化{

    2. 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");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-13
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多