android studio中的回收器视图存在问题-仅偶尔出现
我按照教程为我的应用程序创建了一个recyclerview 我不工作,因为它只是偶尔显示视图中的任何内容 似乎根本就没有任何理由 可回收的布局android studio中的回收器视图存在问题-仅偶尔出现,android,android-recyclerview,Android,Android Recyclerview,我按照教程为我的应用程序创建了一个recyclerview 我不工作,因为它只是偶尔显示视图中的任何内容 似乎根本就没有任何理由 可回收的布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent_layout"
android:layout_width="match_parent"
android:layout_height="80dp">
<TextView
android:id="@+id/text_value"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="Test"
android:textColor="#000000"
android:textSize="18sp" />
</LinearLayout>
虽然没有显示,但我可以测试initAccounts()是否按其应该的方式填充数组
我还可以看到onCreateViewHolder和onBindViewHolder没有被调用
有什么建议吗
编辑:
这是账目
private void initAccounts() {
DatabaseReference userRef =
FirebaseDatabase.getInstance().getReference().child("users");
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Iterator<DataSnapshot> children = snapshot.getChildren().iterator();
while (children.hasNext()) {
DataSnapshot child = children.next();
String[] parts = child.getValue().toString().split(",");
String role = parts[0].replace('{', ' ');
String msg = child.getKey() + ": " + role;
accounts.add(msg);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
private void initAccounts(){
数据库引用userRef=
FirebaseDatabase.getInstance().getReference().child(“用户”);
userRef.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
Iterator children=snapshot.getChildren().Iterator();
while(children.hasNext()){
DataSnapshot child=children.next();
String[]parts=child.getValue().toString().split(“,”);
字符串角色=部分[0]。替换('{','');
字符串msg=child.getKey()+“:”+角色;
accounts.add(msg);
}
}
@凌驾
已取消公共void(@NonNull DatabaseError){
}
});
}这里的问题是您正在向
帐户添加对象,但没有将更改通知适配器。请对代码进行以下更改。
对于在onCreate()中设置适配器,请仅使用
private RecyclerViewAdapterAccounts adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_manage_accounts);
initAccounts();
RecyclerView recyclerView = findViewById(R.id.recycler_view_accounts);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new RecyclerViewAdapterAccounts(accounts, this);
recyclerView.setAdapter(adapter);
}
现在在RecycleServiceAdapterAccounts
中创建一个方法,在适配器中添加元素
public void addAll(ArratList<String> list){
mlist.clear();// To clear list if thats the case
mlist.addAll(list);
notifyDataSetChanged();
}
public void addAll(数组列表){
mlist.clear();//在这种情况下清除列表
mlist.addAll(列表);
notifyDataSetChanged();
}
现在,您可以在一次转到适配器中添加所有元素
public void onDataChange(@NonNull DataSnapshot snapshot) {
ArrayList<String> dataList=new ArrayList<>();
Iterator<DataSnapshot> children = snapshot.getChildren().iterator();
while (children.hasNext()) {
DataSnapshot child = children.next();
String[] parts = child.getValue().toString().split(",");
String role = parts[0].replace('{', ' ');
String msg = child.getKey() + ": " + role;
dataList.add(msg);
}
adapter.addAll(dataList);
}
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
ArrayList dataList=新的ArrayList();
Iterator children=snapshot.getChildren().Iterator();
while(children.hasNext()){
DataSnapshot child=children.next();
String[]parts=child.getValue().toString().split(“,”);
字符串角色=部分[0]。替换('{','');
字符串msg=child.getKey()+“:”+角色;
dataList.add(msg);
}
adapter.addAll(数据列表);
}
你能在函数initAccounts()中发布代码吗?非常感谢,我正准备扔掉我的计算机。我按照教程走了这么远,但还没有理解到找到这样的东西。工作很好,再次感谢你。
private RecyclerViewAdapterAccounts adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_manage_accounts);
initAccounts();
RecyclerView recyclerView = findViewById(R.id.recycler_view_accounts);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new RecyclerViewAdapterAccounts(accounts, this);
recyclerView.setAdapter(adapter);
}
public void addAll(ArratList<String> list){
mlist.clear();// To clear list if thats the case
mlist.addAll(list);
notifyDataSetChanged();
}
public void onDataChange(@NonNull DataSnapshot snapshot) {
ArrayList<String> dataList=new ArrayList<>();
Iterator<DataSnapshot> children = snapshot.getChildren().iterator();
while (children.hasNext()) {
DataSnapshot child = children.next();
String[] parts = child.getValue().toString().split(",");
String role = parts[0].replace('{', ' ');
String msg = child.getKey() + ": " + role;
dataList.add(msg);
}
adapter.addAll(dataList);
}