在recyclerview中没有数据可显示时,如何显示空视图?

时间:2020-03-29 18:45:36

标签: android android-recyclerview

我尝试了多种方法在代码中添加空视图,但对我不起作用, 这是我的活动代码

public class CommentsActivity extends AppCompatActivity {

CommentAdapter adapter;
LinearLayoutManager layoutManager;
RecyclerView recyclerView;
FirebaseFirestore db;
ArrayList<HashMap> CommentsList;
String docRef;
ProgressBar mProgressBar;
TextView EmptyView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_comments);

    Toolbar toolbar = findViewById(R.id.comments_toolbar);
    setSupportActionBar(toolbar);
    mProgressBar = (ProgressBar) findViewById(R.id.comments_progressBar);
    mProgressBar.setVisibility(ProgressBar.VISIBLE);
    EmptyView = findViewById(R.id.comments_empty_view);

    db = FirebaseFirestore.getInstance();
    CommentsList = new ArrayList<>();
    // set up the RecyclerView
    recyclerView = findViewById(R.id.main_comments_list);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);

    //Adding a divider between rows
    DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),
            layoutManager.getOrientation());
    recyclerView.addItemDecoration(dividerItemDecoration);

    Bundle bundle = getIntent().getExtras();
    if (bundle != null) {
        docRef = bundle.getString("docRef");
    }

    db.collection("jobs").document(docRef).collection("comments")
            .orderBy("name")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            HashMap map = (HashMap) document.getData();
                            CommentsList.add(map); //arraylist Jobs
                            adapter.notifyDataSetChanged();
                            mProgressBar.setVisibility(ProgressBar.INVISIBLE);
                        }
                    } else {
                    }
                }
            });
    adapter = new CommentAdapter(this, CommentsList);
    recyclerView.setAdapter(adapter);
}

}

谢谢.......................................... ................................................... ................................................... ................................................... .........

1 个答案:

答案 0 :(得分:0)

在布局文件中保留与父级高度和宽度相匹配的视图,并使该视图对GONE可见。如果没有数据,我的意思是如果CommentsList为空,则将该视图的可见性设置为VISIBLE并将recyclerview的可见性设置为GONE

if(CommentsList.isEmpty()) {
   recyclerView.setVisibility(View.GONE);
   emptyView.setVisibility(View.VISIBLE);
} else {
   recyclerView.setVisibility(View.VISIBLE);
   emptyView.setVisibility(View.GONE);
}
相关问题