我面临一个任务:我创建了一个数据库(它在下面的照片中),我想要在Android应用程序中使用RecycleView在应用程序中创建元素,即CardView,其中将有一个标题,照片,来自数据库的描述以及带有直接可绘制背景的按钮。如果不难,您可以解释如何实现。
我尝试了一堆手册,但没有找到类似的手册。
我当前的代码:
package com.ru.testonline;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
FirebaseFirestore db =FirebaseFirestore.getInstance();
DocumentReference mMainRef =db.collection("Interface").document("Menu");
RecyclerView rv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rv = findViewById(R.id.rv);
final LinearLayoutManager llm = new LinearLayoutManager(this);
rv.setLayoutManager(llm);
mMainRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
Log.d(TAG, "doc" + document);
if (document.exists()) {
List<String> menu = (List<String>) document.get("Card_1");
Log.d(TAG, "Menu: " + menu.size());
if (menu.size() != 0) {
}
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});
}
}
答案 0 :(得分:1)
我认为您正在使用FireStore。这很容易。
您需要遵循以下简单步骤 1.读取数据 2.添加到适配器列表 3.通知适配器列表已更改
这里是示例代码。
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("products").get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
progressBar.setVisibility(View.GONE);
if(!queryDocumentSnapshots.isEmpty()){
List<DocumentSnapshot> list = queryDocumentSnapshots.getDocuments();
for(DocumentSnapshot d : list){
Product p = d.toObject(Product.class);
productList.add(p); //adding read data to your list
}
adapter.notifyDataSetChanged(); //notifying the adapter that list is changed
}
}
});
如果您想逐步了解详细说明,可以观看以下视频: Firestore Android Tutorial - Reading Data
答案 1 :(得分:0)
您需要一个RecyclerView.Adapter来将所有项目放入其中,然后从那里为您的单元创建一个ViewHolder,在onCreateViewholder上充气并将视图链接到该Viewholder并在onBindViewholder上更新您的数据
然后在带有recyclerView的片段上,您需要使用标准CustomRecyclerViewAdapter适配器= new CustomerRecyclerViewAdapter(listOfItems)创建一次适配器,然后使用recyclerView.setAdapter(adapter)将适配器链接到您的recyclerView;