gpt4 book ai didi

java - 当没有条件可显示的项目时隐藏 recyclerview

转载 作者:行者123 更新时间:2023-12-02 09:35:04 25 4
gpt4 key购买 nike

我面临隐藏问题 RecyclerView 。从昨晚开始,我一直在寻找解决方案,但没有找到。

我正在使用 firebase recycleradapter显示 recyclerview 中的值。当有人点击viewholderitem时我保存他的Uiddatasnapshot key 。

因此要显示值 if datasnapshot没有uid键显示 recyclerview 中的值。如果datasnapshotuid关键不显示他的数据。一切正常。但我想隐藏 recyclerview并显示textview当每 datasnapshot有 uid key ,recyclerview 中没有任何内容可显示。我的问题在最后一行。我无法隐藏recyclerview以及如何textview

FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder<ViewsAdapter>()
.setQuery(ViewsRef,ViewsAdapter.class)
.build();


adapter = new FirebaseRecyclerAdapter<ViewsAdapter, ViewsAdapterHolder>(options) {

@Override
protected void onBindViewHolder(@NonNull final ViewsAdapterHolder holder, int position, @NonNull ViewsAdapter model) {
String userIds = getRef(position).getKey();
assert userIds != null;
ViewsRef.child(userIds).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


if (dataSnapshot.hasChild(Uid)){
Long date = dataSnapshot.child(Uid).getValue(Long.class);

assert date != null;
int dat = date.intValue();

if (dat!=Date){
recyclerView.removeAllViews();
dataSnapshot.child(Uid).getRef().setValue(null);
adapter.startListening();


}

ViewGroup.LayoutParams layoutParams =holder.itemView.getLayoutParams();
layoutParams.width= ViewGroup.LayoutParams.MATCH_PARENT;
layoutParams.height= 0;
holder.itemView.setLayoutParams(layoutParams);







}else {

//get the data from child and show in recyclerview

holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}



}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

}

@NonNull
@Override
public ViewsAdapterHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.viewsview,viewGroup,false);
return new ViewsAdapterHolder(view);
}



};

recyclerView.setAdapter(adapter);

最佳答案

i have used adapter.registerAdapterDataObserver(); method but it doesn't works .

我不知道您如何使用registerAdapterDataObserver(),但这是使用它的正确方法。因此,要了解查询返回的项目数,您需要使用适配器类中存在的 getItemCount() 方法。由于 Firebase 实时数据库中的数据是异步加载的,因此您不能直接在适配器类中直接调用 getItemCount(),因为它始终。因此,为了获取项目总数,您需要注册一个观察者,如以下代码行所示:

adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
public void onItemRangeInserted(int positionStart, int itemCount) {
int totalNumberOfItems = adapter.getItemCount();
Log.d(TAG, String.valueOf(totalNumberOfItems));
if(totalNumberOfItems == 0) {
recyclerView.setVisibility(View.GONE);
emptyInfoTextView.setVisibility(View.VISIBLE);
}
}
});

关于java - 当没有条件可显示的项目时隐藏 recyclerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57587615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com