- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用向下滑动来刷新我的 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/
谁能告诉我那一行的错误是什么。 这是显示的错误消息。 package com.example.souravkumar.sqaurewallpapers; import android.os.Bundl
谁能告诉我那一行的错误是什么。 这是显示的错误消息。 package com.example.souravkumar.sqaurewallpapers; import android.os.Bundl
这个问题已经有答案了: firebaserecycleradapter() cannot be applied to FirebaseRecyclerAdapter (5 个回答) 已关闭 4 年前。
这个问题已经有答案了: firebaserecycleradapter() cannot be applied to FirebaseRecyclerAdapter (5 个回答) 已关闭 3 年前。
谁能告诉我错误是什么 enter image description here 这是我的代码 package com.andisofttechnology.myapplication.Model; i
即使在 gradle 依赖项中添加 firebase ui 后,我在尝试使用它时也无法解析 FirebaseRecyclerAdapter。提前致谢 最佳答案 我遇到了同样的问题,通过在 build.
我是 Android 编程新手。我已经能够在 firebase 中创建用户配置文件表,并且可以在 recyclerview 中显示用户配置文件表中的用户数据,但我无法让名为“Arbrg”的产品表在 f
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 4 年前。 我的应用程序在登录后立即崩溃,并
FirebaseRecyclerAdapter - populateViewHolder 第一次运行时没有填充数据,但是当我关闭应用程序并打开它时,数据绑定(bind)在 RecyclerView 中
我为单个项目创建了一个模型类和布局,然后创建了 View 持有者和 firebaseRecyclerAdapter,如下面的代码所示,当我运行它时出现了这个错误 com.google.
我有一个连接到 Firebase 的应用程序。我想用来自 firebase 的数据填充 recyclerview。在此之前,我制作了一个应用程序并且运行良好。现在我使用相同的方法,当我说 adapte
我正在使用 Firebase 创建一个聊天应用。我正在使用来自 firebase-ui 的 recycleView 和 FirebaseRecyclerAdapter 来显示所有消息。我的问题是当有人
@Override public void onStart() { super.onStart(); FirebaseRecyclerAdapter firebaseRecyclerA
我正在使用 FirebaseRecyclerAdapter(FirebaseUI 的一部分)将 Firebase 数据加载到 RecyclerView 中,但是在文档或在线的任何地方我都找不到检测它是
我需要父键及其子键来表示 RecyclerView 中的纬度和经度列表。我想我需要对 FirebaseRecyclerAdapter 内的 populateViewHolder 中的 LatLngsM
这个问题已经有答案了: FirebaseListAdapter not pushing individual items for chat app - Firebase-Ui 3.1 (2 个回答)
代码: FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder()
目前还不清楚如何使用自定义查询填充 FirebaseRecyclerAdapter。 定义一个引用。此处:DatabaseReference ref = mDatabase.getReference(
我的标题有点难以理解,但基本上当我将项目添加到我的数据库时,它应该显示在 RecyclerView 中。现在在我的 RecyclerView 中我有两个布局,但问题是我的数据库的第一项在我的其他布局中
浏览 Firebase Android 友好聊天代码实验室 - https://codelabs.developers.google.com/codelabs/firebase-android/ -
我是一名优秀的程序员,十分优秀!