gpt4 book ai didi

android - 拉动刷新不适用于 firebaseRecyclerAdapter

转载 作者:太空狗 更新时间:2023-10-29 16:12:26 24 4
gpt4 key购买 nike

我正在尝试使用向下滑动来刷新我的 Activity 。我的 Activity 与 Firebase 数据库同步,我正在使用 FirebaseRecyclerAdapter 从我的 firebase 帐户获取回收站中的所有数据。但是我的应用程序没有显示任何内容。即使是滑动操作也不会生成任何动画。

MainAcitivty.java

package com.example.admin.eventadmin;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.squareup.picasso.Picasso;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

public class MainActivity extends AppCompatActivity {

private RecyclerView r_event_list;
private DatabaseReference mDatabaseRef;

private ProgressDialog progressDialog;
private SwipeRefreshLayout swipeRefreshLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressDialog = new ProgressDialog(this);

mDatabaseRef = FirebaseDatabase.getInstance().getReference().child("Event");

r_event_list = (RecyclerView) findViewById(R.id.request_EventList);
r_event_list.setHasFixedSize(true);
r_event_list.setLayoutManager(new LinearLayoutManager(this));

progressDialog = new ProgressDialog(this);
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeContainer);

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
refreshItems();
}
});

}
public void refreshItems(){
loadItems();
}


public void loadItems(){

FirebaseRecyclerAdapter<Event, RequestViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Event, RequestViewHolder>(
Event.class,
R.layout.event_list_row,
RequestViewHolder.class,
mDatabaseRef
) {
@Override
protected void populateViewHolder(RequestViewHolder viewHolder, Event model, int position) {

viewHolder.setTitle(model.getTitle());
viewHolder.setDesc(model.getDesc());
viewHolder.setCategory(model.getCategory());
viewHolder.setLocation(model.getLocation());
viewHolder.setPrice(model.getPrice());
viewHolder.setImageUrl(getApplicationContext(), model.getImageUrl());

swipeRefreshLayout.setRefreshing(false);

final String title = model.getTitle();
final String desc = model.getDesc();
final String image = model.getImageUrl();
final String category = model.getCategory();
final String price = model.getPrice();
final String location = model.getLocation();

final DatabaseReference aRef = FirebaseDatabase.getInstance().getReference();

viewHolder.verify_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressDialog.setMessage("Approving Event");
progressDialog.show();
String key = aRef.child("Approved Events").push().getKey();
Event event = new Event(title, image, price, category, location, desc);

Map<String, Object> eventValues = event.toMap();

Map<String, Object> childUpdates = new HashMap<>();

childUpdates.put("/ApprovedEvents/" + key, eventValues);

aRef.updateChildren(childUpdates);
progressDialog.dismiss();
}
});
}
};
r_event_list.setAdapter(firebaseRecyclerAdapter);
}

public static class RequestViewHolder extends RecyclerView.ViewHolder {
View mView;
public Button verify_button;


public RequestViewHolder(View itemView) {
super(itemView);
mView = itemView;
verify_button = (Button) mView.findViewById(R.id.approve_button);

}

public void setTitle(String title) {
TextView request_title = (TextView) mView.findViewById(R.id.request_title);
request_title.setText(title);
}

public void setDesc(String desc) {
TextView request_desc = (TextView) mView.findViewById(R.id.request_desc);
request_desc.setText(desc);
}

public void setLocation(String location) {
TextView request_desc = (TextView) mView.findViewById(R.id.request_location);
request_desc.setText(location);
}

public void setCategory(String category) {
TextView request_category = (TextView) mView.findViewById(R.id.request_category);
request_category.setText(category);
}
public void setPrice(String price) {
TextView request_price = (TextView) mView.findViewById(R.id.request_price);
request_price.setText(price);
}

public void setImageUrl(Context ctx, String imageUrl) {
ImageView request_image = (ImageView) mView.findViewById(R.id.request_image);
Picasso.with(ctx).load(imageUrl).into(request_image);
}
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.admin.eventadmin.MainActivity">
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/swipeContainer">

<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/request_EventList"
android:clickable="true"/>

</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>

最佳答案

FirebaseRecyclerAdapter 从不需要“拉动刷新”操作。它始终与数据库中的数据同步。如果数据库中发生某些更改,只要您有网络连接,它就会自动反射(reflect)在适配器中。

您应该假设 FirebaseRecyclerAdapter 始终显示最新数据,并且在使用它时不要费心去刷新。

关于android - 拉动刷新不适用于 firebaseRecyclerAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42049914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com