私のJason Responseからいくつかのアイテムを私のrecyclerviewで削除しようとしていますが、削除するアイテムの代わりに空のアイテムスペースが作成されています。これは、私がLinearlayoutマネージャを使用している場合に、gridlayoutマネージャをrecyclerviewで使用している場合にのみ発生しています。以下は私のコードGridlayoutの一部のアイテムを削除するRecyclerviewに空白が残る
activityRecylerviewBinding.recyclerview1.setHasFixedSize(true);
//activityRecylerviewBinding.recyclerview1.setLayoutManager(new LinearLayoutManager(getActivity()));
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2);
activityRecylerviewBinding.recyclerview1.setLayoutManager(mLayoutManager);
activityRecylerviewBinding.recyclerview1.addItemDecoration(new GridSpacingItemDecoration(2, dpToPx(5), true));
activityRecylerviewBinding.recyclerview1.setItemAnimator(new DefaultItemAnimator());
そして、私はそれが正常に動作しますブローコードを使用するとアイテム
if (!user.emailId.equals(clickedemail)){
viewHolder.setIsRecyclable(false);
viewHolder.mAdapterItemChatsBinding.gooot.removeAllViews();
viewHolder.mAdapterItemChatsBinding.gooot.setPadding(0, 0, 0, 0);
//viewHolder.mAdapterItemChatsBinding.gooot.getLayoutParams().height = 0;
}else {
viewHolder.bindUser(user, RecycFragment.this);
}
を削除するためです。
activityRecylerviewBinding.recyclerview1.setLayoutManager(new LinearLayoutManager(getActivity()));
JsonParsingコード
private void initializeFirebase() {
final Query refUsers = FirebaseDatabase.getInstance()
.getReference(ConstantsFirebase.FIREBASE_LOCATION_GARMENTS);
refUsers.keepSynced(true);
final List<UploadImage> uploadImageList = new ArrayList<>();
refUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot messageSnapshot : dataSnapshot.getChildren()) {
UploadImage uploadImage = messageSnapshot.getValue(UploadImage.class);
uploadImageList.add(uploadImage);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
mAdapter = new FirebaseRecyclerAdapter<UploadImage, ChatsItemHolder>(UploadImage.class, R.layout.recycitemfirebase,
ChatsItemHolder.class, refUsers) {
@Override
public ChatsItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
adapterItemChatsBinding = DataBindingUtil.inflate(LayoutInflater
.from(parent.getContext()), viewType, parent, false);
//adapterItemChatsBinding.tvUserName.setTypeface(Typefaces.get(getActivity(), Constants.FONT_ROBOT_REGULAR));
return new ChatsItemHolder(adapterItemChatsBinding);
}
@Override
protected void populateViewHolder(ChatsItemHolder viewHolder, final UploadImage user, int position) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
clickedemail = prefs.getString(Constants.KEY_CLICKED_EMAIL, "");
if (!user.emailId.equals(clickedemail)){
viewHolder.setIsRecyclable(false);
viewHolder.mAdapterItemChatsBinding.gooot.removeAllViews();
viewHolder.mAdapterItemChatsBinding.gooot.setPadding(0, 0, 0, 0);
//viewHolder.mAdapterItemChatsBinding.gooot.getLayoutParams().height = 0;
}else {
viewHolder.bindUser(user, RecycFragment.this);
}
viewHolder.mAdapterItemChatsBinding.title.setText(user.getGarment_name());
viewHolder.mAdapterItemChatsBinding.count.setText(user.getGarment_color());
Glide.with(viewHolder.mAdapterItemChatsBinding.thumbnail.getContext())
.load(user.getImage())
.placeholder(R.drawable.ic_person)
.fitCenter()
.dontAnimate()
.into(viewHolder.mAdapterItemChatsBinding.thumbnail);
}
};
activityRecylerviewBinding.recyclerview1.setAdapter(mAdapter);
}
誰かが私が間違って何をやっている私に言うことはできますか?
PS:誰かが私の質問を理解できない場合は、コメントしてください。スクリーンショットを投稿します。
は、アダプタを更新使用して** notifyDataSetChanged()** コードを次のように 'activityRecylerviewBinding.setAdapter(アダプタ)。 adapter.notifyDataSetChanged(); ' – Karthik
回答ありがとうございますが、問題は解決していません。 – Stackover67
あなたの商品をどこから削除しますか? onBindViewHolderで実行されているif(!user.emailId.equals(clickedemail))の条件付きですか? – Daivid