RecyclerView с помощью setOnClickListener - PullRequest
0 голосов
/ 08 января 2019

Я использую Firebase в качестве базы данных и предварительного просмотра для получения информации о сохраненных данных, теперь я могу вывести на экран и изображение, и название этого изображения, но теперь я бы хотел иметь возможность нажать на быстрый просмотр и открытие нового фрагмента или действия, в котором можно отобразить одно и то же изображение или публикацию при нажатии, т. е. фотографию, имя и возможность включать другие данные в этот новый фрагмент или действие при нажатии на сообщение в окне повторного просмотра .

В двух словах, например: магазин одежды, у вас есть вид утилизации с вашими продуктами и вашим именем, нажмите на этот продукт открывается, но со всеми другими деталями и спецификациями, которые у вас есть.

Я сейчас использую: навигационную кнопку 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 голосов
/ 09 января 2019

У вас есть два варианта.

  1. Вы можете создать интерфейс обратного вызова и вызвать метод обратного вызова из onClick вашего адаптера. Действие или фрагмент, который реализовал интерфейс и передал его экземпляр в Adapter, получит обратный вызов, и вы сможете запустить быстрый просмотр оттуда. Я предпочитаю этот метод. Здесь вы можете найти подробный пример для достижения этой цели.

  2. Поскольку у вас уже есть Context в вашем классе, вы можете напрямую ссылаться на метод в Activity или Fragment и создать оттуда быстрый просмотр Fragment.

    public void onBindViewHolder(ImageViewHolder holder, final int position) {
         ((YourActivity) context).startQuickviewFragment();
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...