有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Firebase实时数据库回收器视图onclick。将图像从第一个活动回收器视图传递到另一个活动回收器视图

我正在尝试将图像从实时数据库回收器视图传递到另一个活动

第一项活动

 package com.khumomashapa.notes.activities;


import 安卓x.annotation.NonNull;
import 安卓x.appcompat.app.AppCompatActivity;
import 安卓x.recyclerview.widget.GridLayoutManager;
import 安卓x.recyclerview.widget.RecyclerView;

import 安卓.content.Context;
import 安卓.content.Intent;
import 安卓.os.Bundle;
import 安卓.view.View;
import 安卓.widget.Toast;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.khumomashapa.notes.R;
import com.khumomashapa.notes.adapter.RecyclerAdapter;
import com.khumomashapa.notes.Messages;
import com.khumomashapa.notes.interfaces.RecyclerTouchListener;

import java.util.ArrayList;

public class StoreActivity extends AppCompatActivity {

    // Widget
    RecyclerView recyclerView;

    //Firebase
    private DatabaseReference mref;

    // Variable
    private ArrayList<Messages> messagesList;

    private RecyclerAdapter recyclerAdapter;
    private Context mContext;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_store);

        recyclerView = findViewById(R.id.products_view);


        GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setHasFixedSize(true);



        recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext()
        ,recyclerView, new RecyclerTouchListener.ClickListener() {
            @Override
            public void onClick(View view, int position) {
                Intent intent = new Intent(getBaseContext(), PreviewActivity.class);
                intent.putExtra("images", position);
                startActivity(intent);




                Messages messages = messagesList.get(position);
                Toast.makeText(StoreActivity.this, "You have selected: "+ messages.getTitle(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onLongClick(View view, int position) {

            }

                    @Override
                    public void onButtonClicks(View view, int position) {


                    }
                })
        );




        // Firebase

        mref =  FirebaseDatabase.getInstance().getReference();


        // Arraylist

        messagesList = new ArrayList<Messages>();

        // Clear arraylist

        ClearAll();

        // Get data Method

        GetDataFromFirebase();
    }

    private void GetDataFromFirebase(){
        Query query = mref.child("Wallpapers");

        query.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            ClearAll();


                for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                    Messages messages = new Messages();

                    messages.setImage(snapshot.child("image").getValue().toString());
                    messages.setTitle(snapshot.child("title").getValue().toString());

                    messagesList.add(messages);


                }

                recyclerAdapter = new RecyclerAdapter(getApplicationContext(), messagesList);
                recyclerView.setAdapter(recyclerAdapter);
                recyclerAdapter.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });





    }

    private void ClearAll(){
        if(messagesList != null){
            messagesList.clear();

            if (recyclerAdapter !=null){
                recyclerAdapter.notifyDataSetChanged();
            }


        }

        messagesList = new ArrayList<Messages>();
    }

}

This is the first activity layout

我希望在其中显示图像的活动

    package com.khumomashapa.notes.activities;

import 安卓x.annotation.NonNull;
import 安卓x.appcompat.app.AppCompatActivity;

import 安卓.os.Bundle;
import 安卓.widget.Button;
import 安卓.widget.ImageView;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.khumomashapa.notes.R;
import com.squareup.picasso.Picasso;

public class PreviewActivity extends AppCompatActivity {

    private ImageView preview;
    Button purchaseBtn;
    Button downloadBtn;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_preview);

        preview = findViewById(R.id.ImagePreview);
        purchaseBtn = findViewById(R.id.PurchaseBtn);
        downloadBtn = findViewById(R.id.DownloadBtn);

        String preview = getIntent().getStringExtra("images");
    }
}

This is the second activities layout

如您所见,imageview中没有显示任何图像。 这个代码确实有效。它确实会将用户带到另一个活动,但它不会显示在第一个活动中单击的图像,正如您所看到的,我要显示的图像不止一个。单击的图像必须显示在下一个活动中

简而言之,我希望发生的是:

  1. 有人点击图像,如绑架、蓝色电影院等
  2. 然后,用户被带到另一个活动,并显示他们单击的图像(绑架或蓝色电影院等)

抱歉,如果我听起来有些多余,但我已经在这方面停留了一段时间,而且我以前阅读的教程/帖子没有帮助,因为它们没有使用与Firebase实时数据库一起工作的代码


共 (0) 个答案