【发布时间】:2022-01-13 12:11:45
【问题描述】:
我正在尝试从 Firestore 在我的回收站视图中添加数据。 我有名称为 (Level+"levelNo.") 的文件 但我的活动没有显示任何内容 代码如下:
主要活动:
public class LevelActivity extends AppCompatActivity {
// Recycler View object
RecyclerView recyclerView;
// Array list for recycler view data source
public static List<String> levelList = new ArrayList<>();
// Layout Manager
RecyclerView.LayoutManager RecyclerViewLayoutManager;
// adapter class object
LevelAdapter adapter;
// Linear Layout Manager
LinearLayoutManager HorizontalLayout;
FirebaseFirestore firebaseFirestore;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_level);
// initialisation with id's
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
RecyclerViewLayoutManager = new LinearLayoutManager(getApplicationContext());
// Set LayoutManager on Recycler View
recyclerView.setLayoutManager(RecyclerViewLayoutManager);
firebaseFirestore = FirebaseFirestore.getInstance();
loadLevel();
// calling constructor of adapter
// with source list as a parameter
adapter = new LevelAdapter(levelList);
// Set Horizontal Layout Manager
// for Recycler view
HorizontalLayout = new LinearLayoutManager(LevelActivity.this, LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(HorizontalLayout);
// Set adapter on recycler view
recyclerView.setAdapter(adapter);
}
private void loadLevel(){
levelList.clear();
firebaseFirestore.collection("QUIZ LEVELS")
.document("TOTAL_LEVELS").get()
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
DocumentSnapshot doc = task.getResult();
if (doc.exists()) {
long levelCount = (long) doc.get("count");
for (int i = 1; i <= levelCount; i++) {
String levelName = doc.getString("LEVEL" + i);
levelList.add(levelName);
}
}else{
Toast.makeText(LevelActivity.this, "no level", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(LevelActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
电平适配器:
public class LevelAdapter extends RecyclerView.Adapter<LevelAdapter.MyView> {
// List with String type
private final List<String> levelList;
// View Holder class which
// extends RecyclerView.ViewHolder
public class MyView extends RecyclerView.ViewHolder {
// Text View
TextView textView;
// parameterised constructor for View Holder class
// which takes the view as a parameter
public MyView(View view) {
super(view);
// initialise TextView with id
textView = (TextView) view.findViewById(R.id.textview);
}
}
// Constructor for adapter class
// which takes a list of String type
public LevelAdapter(List<String> horizontalList) {
this.levelList = horizontalList;
}
// Override onCreateViewHolder which deals
// with the inflation of the card layout
// as an item for the RecyclerView.
@Override
public MyView onCreateViewHolder(ViewGroup parent, int viewType) {
// Inflate item.xml using LayoutInflator
View itemView
= LayoutInflater
.from(parent.getContext())
.inflate(R.layout.recycler_view_item,
parent, false);
// return itemView
return new MyView(itemView);
}
// Override onBindViewHolder which deals
// with the setting of different data
// and methods related to clicks on
// particular items of the RecyclerView.
@Override
public void onBindViewHolder(final MyView holder, final int position) {
// Set the text of each item of
// Recycler view with the list items
holder.textView.setText(levelList.get(position));
}
// Override getItemCount which Returns
// the length of the RecyclerView.
@Override
public int getItemCount() {
return levelList.size();
}
}
【问题讨论】:
标签: java android google-cloud-firestore android-recyclerview adapter