使用setOnClickListener

时间:2019-01-08 20:48:38

标签: android firebase firebase-realtime-database

我正在使用Firebase作为数据库和预览来获取有关已保存数据的信息,现在可以在视图中同时显示图像和该图像的名称,但是现在我希望能够单击快速查看并打开一个新的片段或活动,在其中可以显示单击的相同图像或出版物,即单击recyclerview帖子时的照片,名称和在该新片段或活动中包含其他数据的权力

举例来说:一家服装店,您有一个回收站,上面有您的产品和您的名字,单击该产品后会打开,但您拥有所有其他详细信息和规格。

我当前正在使用:带有片段的Firebase导航按钮

显示回收站视图的片段:

mRecyclerView = v.findViewById(R.id.recycler_view);
    mRecyclerView.setHasFixedSize(true);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    mUploads = new ArrayList<>();

    mDatabaseRef = FirebaseDatabase.getInstance().getReference("Posts");

    mDatabaseRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                Uploads uploads = postSnapshot.getValue(Uploads.class);
                mUploads.add(uploads);
            }

            mAdapter = new ImageAdapter(getActivity(), mUploads);

            mRecyclerView.setAdapter(mAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });return v;

//适配器代码

public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
private Context mContext;
private List<Uploads> mUploads;


public ImageAdapter(Context context, List<Uploads> uploads) {
    mContext = context;
    mUploads = uploads;
}

@Override
public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(mContext).inflate(R.layout.home_item, parent, false);
    return new ImageViewHolder(v);
}



@Override
public void onBindViewHolder(ImageViewHolder holder, final int position) {
    Uploads uploadCurrent = mUploads.get(position);
    holder.textViewName.setText(uploadCurrent.getName());
    Picasso.get()
            .load(uploadCurrent.getImageUrl())
            .placeholder(R.mipmap.ic_launcher)
            .into(holder.imageView);

}

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

public class ImageViewHolder extends RecyclerView.ViewHolder {
    public TextView textViewName;
    public ImageView imageView;


    public ImageViewHolder(View itemView) {
        super(itemView);

        textViewName = itemView.findViewById(R.id.Descripcion);
        imageView = itemView.findViewById(R.id.ImagePro);
    }
}

}

1 个答案:

答案 0 :(得分:0)

您有两个选择。

  1. 您可以创建一个回调接口并从适配器的onClick触发该回调方法。实现该接口并将其实例传递给Adapter的活动或片段将获得回调,您可以从那里启动快速视图。我更喜欢这种方法。 Here,您可以找到实现此目的的详细示例。

  2. 由于您的班级中已有Context,因此您可以直接在Activity或Fragment中引用一个方法,并从那里创建一个快速查看的Fragment。

    public void onBindViewHolder(ImageViewHolder holder, final int position) {
         ((YourActivity) context).startQuickviewFragment();
    }