Guten Abend.Befüllen RecyclerView mit Firebase-Datenbank
Ich habe einen Testcode, in dem ich ein RecycleView auffüllen möchte, das ein ImageView hat. Die ImageView wird mit einem JPG-Bild aus einer URL in der Firebase-Datenbank gefüllt.
Das Problem ist, dass ich nicht bekomme, wie Daten abrufen und Recycleview befüllen Ich las FirebaseUI auf Github, aber aufrichtig finde ich es irgendwie schwierig, weil ich allein in dieser Anwendung bin.
Dies ist der MainActivity Code:
public class MainActivity extends AppCompatActivity{
DatabaseReference mReference;
DatabaseReference mURLReference;
public FirebaseRecyclerAdapter<Pictures, PicturesHolder> mRecyclerViewAdapter;
//UI
RecyclerView mImagesRV;
LinearLayoutManager mManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mReference = FirebaseDatabase.getInstance().getReference();
mURLReference= mReference.child("Pictures Data");
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
mImagesRV=(RecyclerView)findViewById(R.id.recyclerView);
mManager=new LinearLayoutManager(this);
mManager.setReverseLayout(false);
mImagesRV.setHasFixedSize(false);
mImagesRV.setLayoutManager(mManager);
}
public void onAttachRecyclerView()
{
Query lastHundred = mURLReference.limitToLast(100);
mRecyclerViewAdapter = new FirebaseRecyclerAdapter<Pictures, PicturesHolder>(
Pictures.class,R.layout.content_main,PicturesHolder.class, lastHundred
) {
@Override
protected void populateViewHolder(PicturesHolder pictureView, Pictures pictures, int position) {
}
};
}
}
Dies ist das Objekt, das ich verwende, um Daten in FirebaseDatabase einzufügen (Ich möchte nur die URL):
public class Pictures {
String pictureID;
String downloadURL;
double latitude;
double longitude;
public Pictures() {
}
public void setPictureID(String pictureID) {
this.pictureID = pictureID;
}
public void setDownloadURL(String downloadURL) {
this.downloadURL = downloadURL;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public String getPictureID() {
return pictureID;
}
public String getDownloadURL() {
return downloadURL;
}
public double getLatitude() {
return latitude;
}
public double getLongitude() {
return longitude;
}
}
Und das ist der ViewHolder, Ich weiß nicht, ob es in Ordnung ist.
public class PicturesHolder extends RecyclerView.ViewHolder {
ImageView imageView;
public PicturesHolder(View itemView)
{
super(itemView);
imageView = (ImageView) itemView.findViewById(R.id.picture_view);
}
public void setImageView(ImageView imageView) {
this.imageView = imageView;
}
}
Es wäre schön, einen guten Rat von euch zu erhalten! Vielen Dank.
Nun, ich habe nie Firebase-Datenbank verwendet, aber was verwenden Sie für die Vernetzung? Weil ich keine sehen kann. –
Zunächst müssen Sie eine Implementierung von populateViewHolder bereitstellen, um Daten aus den Picture- in die PictureHolder-Ansichten zu kopieren. Zweitens möchten Sie wahrscheinlich keine Methode zum Festlegen von Ansichten in PictureHolder. ViewHolder extrahieren nur Referenzen auf Ansichten, die in der übergebenen ItemView gefunden wurden. Stattdessen möchten Sie wahrscheinlich die Download-URL verwenden und etwas wie Glide verwenden, um das Bild herunterzuladen und es in ImageView zu platzieren. Wenn Sie mit der Funktionsweise von RecyclerView nicht vertraut sind, möchten Sie vielleicht zunächst ein einfaches Beispiel ohne Firebase ausführen. –