作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个电话目录应用程序,我想在不同的 Activity 中显示不同的类别数据。我想帮助人们在不同类别中轻松找到他们的信息它向我显示了数据库中的所有数据。但我不想只显示“救护车联系人”类别数据。
package com.example.moulvibazarinfo.allCatagory;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.example.moulvibazarinfo.AllAdapters.DataSetFire;
import com.example.moulvibazarinfo.AllAdapters.DetailsViewActivity;
import com.example.moulvibazarinfo.AllAdapters.FirebaseViewHolder;
import com.example.moulvibazarinfo.AllAdapters.SubmitedContact;
import com.example.moulvibazarinfo.R;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
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 java.util.ArrayList;
public class AmbulanceActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ArrayList<DataSetFire> arrayList;
private FirebaseRecyclerOptions<DataSetFire> options;
private FirebaseRecyclerAdapter<DataSetFire, FirebaseViewHolder> adapter;
private DatabaseReference databaseReference;
@Override
protected void onStart() {
super.onStart();
adapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter.stopListening();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ambulance);
recyclerView = findViewById(R.id.ambulanceRecycleListViewID);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
arrayList = new ArrayList<DataSetFire>();
databaseReference = FirebaseDatabase.getInstance().getReference().child("MiContact");
databaseReference.keepSynced(true);
options = new FirebaseRecyclerOptions.Builder<DataSetFire>().setQuery(databaseReference, DataSetFire.class).build();
adapter = new FirebaseRecyclerAdapter<DataSetFire, FirebaseViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final FirebaseViewHolder holder, int position, @NonNull final DataSetFire model) {
//filtering database
holder.nameTextView.setText("name: "+model.getName());
holder.institutionNameTextView.setText("institution Name: "+model.getInstitutionName());
holder.emailTextView.setText("Email: "+model.getEmail());
holder.numberTextView.setText("Number: "+model.getNumber());
holder.categoryTextView.setText("category: "+model.getCategory());
holder.addressTextView.setText("address: "+model.getAddress());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(AmbulanceActivity.this,DetailsViewActivity.class);
intent.putExtra("name",model.getName());
intent.putExtra("institutionName",model.getInstitutionName());
intent.putExtra("email",model.getEmail());
intent.putExtra("number",model.getNumber());
intent.putExtra("category",model.getCategory());
intent.putExtra("address",model.getCategory());
startActivity(intent);
}
});
}
@NonNull
@Override
public FirebaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new FirebaseViewHolder(LayoutInflater.from(AmbulanceActivity.this).inflate(R.layout.row, parent, false));
}
};
recyclerView.setAdapter(adapter);
}
}
请有人帮助我!我是java新手。
最佳答案
要对 Firebase 实时数据库中的数据进行排序,您可以使用其 orderByChild()
方法:
databaseReference = FirebaseDatabase.getInstance().getReference().child("MiContact");
Query query = databaseReference.orderByChild("category");
options = new FirebaseRecyclerOptions.Builder<DataSetFire>().setQuery(query, DataSetFire.class).build();
这假设该属性在 JSON 中称为 category
。如果它有不同的名称,请更新 orderByChild(...)
调用。
其余代码可以保持不变。通过这个简单的更改,数据库服务器、Firebase SDK 和 FirebaseUI 适配器将协同工作,按请求的顺序显示联系人。
<小时/>编辑:如果您想过滤为仅显示 category
等于 Ambulance
的项目,您可以通过更改查询来实现,例如这个:
Query query = databaseReference.orderByChild("category").equalTo("Ambulance");
<小时/>
我强烈建议您查看 ordering and filtering data 上的 Firebase 文档,也许还有 codelab for Android developers .
关于java - 如何在 FirebaseRecyclerAdapter 中设置 orderbychild?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349224/
我是一名优秀的程序员,十分优秀!