gpt4 book ai didi

java - Recyclerview 中的 view.GONE 仍保留空间

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:01 25 4
gpt4 key购买 nike

我在网上搜索了一下,发现view.invisible和view.gone之间有区别,vie.gone必须消失而不保留空间,但它没有发生在我身上,我该如何解决它?请帮忙看看这两张图片的链接。

Android模拟器上的结果图片:/image/AC1Xr.png

数据库:/image/Pwhno.png

@Override
protected void onStart() {
super.onStart();

final FirebaseRecyclerAdapter<MyReading, MyReadingViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter <MyReading, MyReadingViewHolder>
(
MyReading.class,
R.layout.list_reading,
MyReadingViewHolder.class,
mQuery )

{
@Override
protected void populateViewHolder(final MyReadingViewHolder viewHolder, MyReading model, int position) {

final String wordNote_key = getRef(position).getKey();

viewHolder.setWord(model.getWord());
viewHolder.setNote(model.getNote());


mDatabase.child(wordNote_key).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

String currentUid = (String) dataSnapshot.child("uid").getValue();

if(firebaseauth.getCurrentUser().getUid().equals(currentUid)){

viewHolder.nView.setVisibility(View.VISIBLE);
}
else
{
viewHolder.nView.setVisibility(View.GONE);
}

}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

viewHolder.nView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Intent singleIntent = new Intent(WordNote.this, HandleWordNote.class);
singleIntent.putExtra("listWords", wordNote_key);
startActivity(singleIntent);

}
});
}
};

listWN.setAdapter(firebaseRecyclerAdapter);
}

最佳答案

编辑

好的,看到更新后的图像后,我明白了真正的问题。在查询中,添加约束以仅返回具有当前用户 uid 的数据快照。问题是,即使您的viewholder 的 View GONE,viewholder 本身仍将保持该位置,因为该位置有一个模型对象。无需破解 FirebaseRecyclerAdapter,只需使用传入的 Query 对象过滤掉列表中不需要的数据即可。

<小时/>

您是否尝试过将更改通知适配器?仅仅因为您修改了 subview ,并不意味着适配器会自动将 viewHolder 调整为正确的大小。

mDatabase.child(wordNote_key).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

String currentUid = (String) dataSnapshot.child("uid").getValue();

if(firebaseauth.getCurrentUser().getUid().equals(currentUid)){

viewHolder.nView.setVisibility(View.VISIBLE);
}
else
{
viewHolder.nView.setVisibility(View.GONE);
}
//Notify the adapter the viewholder at this position changed.
notifiyItemChanged(position);
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

关于java - Recyclerview 中的 view.GONE 仍保留空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44705131/

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