落花踏尽游何处,笑入胡姬酒肆中。这篇文章主要讲述在android studio中引用Firestore相关的知识,希望能为你提供帮助。
我有一些问题,引用一个特定的集合是嵌套的(我认为这个术语),我已经附上了我的数据库结构的图像如下。
文章图片
编辑:食品系列的图片
文章图片
我基本上有多个文档,里面有一个同名的集合。有没有一种方法可以让我根据用户在前一页点击的餐厅ID动态选择 "食品 "集合,即如果用户选择了ID为01的餐厅,就应该从ID为01的文档中加载 "食品",等等。
【在android studio中引用Firestore】以下是我的代码,用于加载食品的片段。
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.hostapp.Adapters.FoodAdapter;
import com.example.hostapp.Models.FoodModel;
import com.example.hostapp.R;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;
public class MainsFragment extends Fragment {private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference menuref = db.collection("Foods");
private FoodAdapter adapter;
String restaurantid = "";
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_mains, container, false);
Query query = menuref.whereEqualTo("menuid", restaurantid).orderBy("name");
FirestoreRecyclerOptions<
FoodModel>
options = new FirestoreRecyclerOptions.Builder<
FoodModel>
().
setQuery(query, FoodModel.class)
.build();
adapter = new FoodAdapter(options);
RecyclerView recyclerView = view.findViewById(R.id.recycler_mains);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
recyclerView.setAdapter(adapter);
return view;
}private void setUpRecyclerView() {}@Override
public void onStart() {
super.onStart();
adapter.startListening();
}@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
}
对于前一个页面的点击,
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RelativeLayout;
import com.example.hostapp.Adapters.RestaurantAdapter;
import com.example.hostapp.Adapters.categoryCardAdapter;
import com.example.hostapp.Models.Restaurant;
import com.example.hostapp.Models.categoryCard;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;
public class RestaurantList extends AppCompatActivity {private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference restaurantref = db.collection("restaurants");
private RestaurantAdapter adapter;
String categoryid="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_restaurant_list);
setUpRecyclerView();
}private void setUpRecyclerView(){//Get intent
if(getIntent() != null)
categoryid = getIntent().getStringExtra("categoryid");
if(!categoryid.isEmpty() &
&
categoryid != null)
{
Query query = restaurantref.whereEqualTo("categoryid", categoryid).orderBy("name");
final FirestoreRecyclerOptions<
Restaurant>
options = new FirestoreRecyclerOptions.Builder<
Restaurant>
().setQuery(query, Restaurant.class).build();
adapter = new RestaurantAdapter(options);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.restaurant_recycler);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
adapter.setOnItemClickListerner(new RestaurantAdapter.OnItemClickListener() {
@Override
public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
Restaurant restaurant = documentSnapshot.toObject(Restaurant.class);
Intent foodlist = new Intent(RestaurantList.this, Foodlist.class);
foodlist.putExtra("restaurantid", documentSnapshot.getId());
startActivity(foodlist);
}
});
}
}@Override
protected void onStart() {
super.onStart();
adapter.startListening();
}@Override
protected void onStop() {
super.onStop();
adapter.stopListening();
}
}
答案根据你的意见,要得到所有
Food
所有子库中存在的文件,根据 "文件管理 "的要求,将其归入 "文件管理 "的范畴。menuid
财产,a 火库收藏组查询 是需要的。这个查询是这样的。Query menuIdQuery = db.collectionGroup("Foods").whereEqualTo("menuid", yourMenuId);
推荐阅读
- 如何在spring-boot中用application.properties制作config类()
- Sqlite表在小米Note 7s上不创建,但在其他手机和Android Studio中的虚拟设备上创建。
- Apple为什么说iPhone应用程序使用MVC()
- 如何在Android Studio中将Pdf文件转换为文本
- 在Odoo中的Many2Many字段插入请求在android中不起作用
- App爬虫----adb的使用
- pi币可期(区块链,派币),app翻译
- ESP8266环境监测系统+制作手机App在线实时显示
- App的爬虫----Appium的介绍