首页 > 解决方案 > 不能删除选中的项目,只删除最后添加的项目

问题描述

我正在尝试删除 RecyclerView 中的选定项目,但是当我单击删除按钮时,它只会删除最后添加的项目。在我删除添加的最后一个项目后,我无法再删除。我错过了什么?

主要活动

public class MainWishActivity extends AppCompatActivity {

private NavigationView navigationView;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle actionBarDrawerToggle;
private RecyclerView wishList;
private androidx.appcompat.widget.Toolbar mToolbar;

private ImageButton ibaddnewwishlist;

private CircleImageView NavProfileImage;
private TextView NavProfileFirstName, NavProfileLastName;


private FirebaseAuth mAuth;
private DatabaseReference UsersRef, WishListRef;

String currentUserID;


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

    mAuth = FirebaseAuth.getInstance();

    currentUserID = mAuth.getCurrentUser().getUid();

    UsersRef = FirebaseDatabase.getInstance().getReference().child("Brukere");
    WishListRef = FirebaseDatabase.getInstance().getReference().child("Ønskelister").child(currentUserID);

    mToolbar = (Toolbar) findViewById(R.id.main_page_toolbar);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setTitle(" Dine Ønskelister");

    drawerLayout = (DrawerLayout)findViewById(R.id.drawable_layout);
    actionBarDrawerToggle = new ActionBarDrawerToggle(MainWishActivity.this, drawerLayout, R.string.drawer_open, R.string.drawer_close);
    drawerLayout.addDrawerListener(actionBarDrawerToggle);
    actionBarDrawerToggle.syncState();
    ibaddnewwishlist = (ImageButton)findViewById(R.id.ib_addnewwishlist);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    navigationView = (NavigationView)findViewById(R.id.navigation_view);

    wishList = (RecyclerView)findViewById(R.id.rv_wishlist);
    wishList.setHasFixedSize(true);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    linearLayoutManager.setReverseLayout(true);
    linearLayoutManager.setStackFromEnd(true);
    wishList.setLayoutManager(linearLayoutManager);


    View navView = navigationView.inflateHeaderView(R.layout.navigation_header);

    NavProfileImage = (CircleImageView)navView.findViewById(R.id.civ_navprofilepicture);
    NavProfileFirstName = (TextView)navView.findViewById(R.id.tv_headerfirstname);
    NavProfileLastName = (TextView) navView.findViewById(R.id.tv_headerlastname);

    UsersRef.child(currentUserID).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            if (dataSnapshot.exists()){

                if (dataSnapshot.hasChild("fornavn")){
                    String firstname = dataSnapshot.child("fornavn").getValue().toString();
                    NavProfileFirstName.setText(firstname);
                }

                if (dataSnapshot.hasChild("etternavn")) {
                    String lastname = dataSnapshot.child("etternavn").getValue().toString();
                    NavProfileLastName.setText(lastname);
                }

                if (dataSnapshot.hasChild("profilbilde")){
                    String image = dataSnapshot.child("profilbilde").getValue().toString();
                    Picasso.with(MainWishActivity.this).load(image).placeholder(R.drawable.profile).into(NavProfileImage);

                }
                else{
                    Toast.makeText(MainWishActivity.this, "Profil navn finnes ikke...", Toast.LENGTH_SHORT).show();
                }

            }

        }

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

        }
    });

    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            UserMenuSelector(item);
            return false;
        }
    });

    ibaddnewwishlist.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            SendUserToWishListActivity();

        }
    });

    DisplayUsersWishLists();
}

private void DisplayUsersWishLists() {

    FirebaseRecyclerAdapter<WishListClass, WishListViewHolder > firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<WishListClass, WishListViewHolder>
                    (
                            WishListClass.class,
                            R.layout.wish_list_single_layout,
                            WishListViewHolder.class,
                            WishListRef


                    ) {
                @Override
                protected void populateViewHolder(WishListViewHolder viewHolder, WishListClass model, final int position) {

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


                    viewHolder.setFornavn(model.getFornavn());
                    viewHolder.setDate(model.getDate());
                    viewHolder.setTitle(model.getTitle());
                    viewHolder.setProfilbilde(getApplicationContext(), model.getProfilbilde());

                    viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {

                            Intent profileIntent = new Intent(MainWishActivity.this, UserWishItemActivity.class);
                            profileIntent.putExtra("Key", Key);
                            startActivity(profileIntent);
                        }
                    });
                }
            };


    wishList.setAdapter(firebaseRecyclerAdapter);


}

public static class WishListViewHolder extends RecyclerView.ViewHolder{

    View mView;



    public WishListViewHolder(@NonNull View itemView) {
        super(itemView);
        mView = itemView;

    }

    public void setFornavn (String fornavn){

        TextView wishlist_name = (TextView) mView.findViewById(R.id.tv_firstnamelist);
        wishlist_name.setText(fornavn);

    }

    public void setProfilbilde (Context ctx, String profilbilde){

        CircleImageView image = (CircleImageView) mView.findViewById(R.id.civ_profilepicturelist);
        Picasso.with(ctx).load(profilbilde).into(image);

    }

    public void setDate (String date){

        TextView wishlist_date = (TextView) mView.findViewById(R.id.tv_publisheddatelist);
        wishlist_date.setText("    " + date);
    }

    public void setTitle (String title){

        TextView wishlist_title = (TextView) mView.findViewById(R.id.tv_wishlisttitle);
        wishlist_title.setText(title);
    }

}
private void SendUserToWishListActivity(){

    Intent addNewPostIntent = new Intent(MainWishActivity.this, AddWishListActivity.class);
    startActivity(addNewPostIntent);

}

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

    FirebaseUser currentUser = mAuth.getCurrentUser();
    if (currentUser == null){
        SendUserToLoginActivity();

    }
    else
    {
        CheckUserExistence();
    }

}

private void CheckUserExistence(){

    final String current_user_id = mAuth.getCurrentUser().getUid();

    UsersRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            if (!dataSnapshot.hasChild(current_user_id)){

                SendUserToUserInfoAcitivity();
            }

        }

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

        }
    });

}

private void SendUserToUserInfoAcitivity(){

    Intent setupIntent = new Intent(MainWishActivity.this, UserInfoActivity.class);
    setupIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(setupIntent);
    finish();
}

private void SendUserToLoginActivity() {
    Intent loginIntent = new Intent(MainWishActivity.this, LoginActivity.class);
    loginIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(loginIntent);
    finish();
}

private void SendUserToFindFriendsActivity(){

    Intent findfriendsIntent = new Intent(MainWishActivity.this, FindFriendsActivity.class);
    findfriendsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(findfriendsIntent);
    finish();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (actionBarDrawerToggle.onOptionsItemSelected(item))
    {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

private void UserMenuSelector (MenuItem item){

    switch (item.getItemId()){

        case R.id.navbtn_addwishlist:
            SendUserToWishListActivity();
            break;

        case R.id.navbtn_profile:
            Toast.makeText(this, "Profil", Toast.LENGTH_SHORT).show();
            break;

        case R.id.navbtn_home:
            Toast.makeText(this, "Hjem", Toast.LENGTH_SHORT).show();
            break;

        case R.id.navbtn_friends:
            Toast.makeText(this, "Venner", Toast.LENGTH_SHORT).show();
            break;

        case R.id.navbtn_findfriends:
            SendUserToFindFriendsActivity();
            break;

        case R.id.navbtn_settings:
            Toast.makeText(this, "Instillinger", Toast.LENGTH_SHORT).show();
            break;

        case R.id.navbtn_logout:
            mAuth.signOut();
            SendUserToLoginActivity();
            break;


    }

}

第二活动

public class UserWishItemActivity extends AppCompatActivity {

private TextView tvwishlisttitle;
private EditText etwishitem;
private Button btnaddwishitem;
private RecyclerView wishListitems;


private String currentUserID, databaseUserID;
private String Key, postRandomName;
private DatabaseReference WishListUsersClickRef, UsersRef, WishItemsRef, wishListRef,WishItemsRef1;

private FirebaseAuth mAuth;




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

    Key = getIntent().getExtras().get("Key").toString();

    mAuth = FirebaseAuth.getInstance();

    currentUserID = mAuth.getCurrentUser().getUid();

    UsersRef = FirebaseDatabase.getInstance().getReference().child("Brukere");
    WishItemsRef = FirebaseDatabase.getInstance().getReference().child("Ønsker");
    wishListRef = FirebaseDatabase.getInstance().getReference().child("Ønskelister").child(currentUserID).child(Key);



    tvwishlisttitle = (TextView)findViewById(R.id.tv_userwishlisttitle);
    etwishitem = (EditText)findViewById(R.id.et_wishitem);
    btnaddwishitem = (Button)findViewById(R.id.btn_addwishitem);

    btnaddwishitem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            CreateWishlist();


        }
    });


    wishListitems = (RecyclerView)findViewById(R.id.rv_wishlistitems);
    wishListitems.setHasFixedSize(true);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    linearLayoutManager.setReverseLayout(true);
    linearLayoutManager.setStackFromEnd(true);
    wishListitems.setLayoutManager(linearLayoutManager);


    WishListUsersClickRef = FirebaseDatabase.getInstance().getReference("Ønskelister").child(currentUserID).child(Key);


    WishListUsersClickRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            if (dataSnapshot.exists()){

            String title = dataSnapshot.child("title").getValue().toString();

            databaseUserID = dataSnapshot.child("uid").getValue().toString();



            tvwishlisttitle.setText(title);

            }


        }



        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    DisplayWishListItems();





}



private void DisplayWishListItems() {

    FirebaseRecyclerAdapter<WishItemClass, WishListItemsViewHolder > firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<WishItemClass, WishListItemsViewHolder>
                    (
                            WishItemClass.class,
                            R.layout.wish_list_item_layout,
                            WishListItemsViewHolder.class,
                            WishItemsRef.child(Key)

                    ) {
                @Override
                protected void populateViewHolder(final WishListItemsViewHolder viewHolder, final WishItemClass model, final int position) {


                    viewHolder.setWishitemname(model.getWishitemname());





                    viewHolder.m1View.setOnLongClickListener(new View.OnLongClickListener() {
                        @Override
                        public boolean onLongClick(View view) {



                            AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(UserWishItemActivity.this);
                            LayoutInflater inflater = getLayoutInflater();
                            final View dialogView = inflater.inflate(R.layout.endreslettjobb_dialog, null);

                            dialogBuilder.setView(dialogView);


                            dialogBuilder.setTitle(model.getWishitemname());

                            final AlertDialog alertDialog = dialogBuilder.create();
                            alertDialog.show();

                            final Button btndelete = (Button)dialogView.findViewById(R.id.btn_delete);

                            btndelete.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View view) {

                                    WishItemsRef.removeValue();



                                }
                            });





                            return false;



                        }
                    });


                }
            };


    wishListitems.setAdapter(firebaseRecyclerAdapter);



}


public static class WishListItemsViewHolder extends RecyclerView.ViewHolder{

    View m1View;



    public WishListItemsViewHolder(@NonNull View itemView) {
        super(itemView);
        m1View = itemView;

    }

    public void setWishitemname (String wishitemname){

        TextView wishitem_name = (TextView) m1View.findViewById(R.id.tv_wishitemname);
        wishitem_name.setText(wishitemname);

    }

    public void setUid (String uid){


    }

}

private void CreateWishlist() {


    postRandomName = String.valueOf(new Date().getTime());

    final String wishlist = etwishitem.getText().toString().trim();

    etwishitem.setText("");



    wishListRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            if (dataSnapshot.exists()) {



                HashMap postMap = new HashMap();
                postMap.put("uid", currentUserID);
                postMap.put("wishitemname", wishlist);
                WishItemsRef.child(Key).child(postRandomName).updateChildren(postMap)
                        .addOnCompleteListener(new OnCompleteListener() {
                            @Override
                            public void onComplete(@NonNull Task task) {


                                }


                        });


            }

        }

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

        }
    });


}

添加项目活动

private Spinner spwishlisttitle;
private Button btnsavewishlist;

private DatabaseReference UsersRef, wishListRef;


private FirebaseAuth mAuth;

private String saveCurrentDate, currentUserID, postRandomName;


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

    UsersRef = FirebaseDatabase.getInstance().getReference().child("Brukere");
    wishListRef = FirebaseDatabase.getInstance().getReference().child("Ønskelister");
    mAuth = FirebaseAuth.getInstance();
    currentUserID = mAuth.getCurrentUser().getUid();


    spwishlisttitle = (Spinner) findViewById(R.id.sp_wishlisttitle);
    btnsavewishlist = (Button) findViewById(R.id.btn_savewishlist);

    btnsavewishlist.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

           CreateWishlist();

        }
    });

}

private void CreateWishlist() {

    Calendar calFordDate = Calendar.getInstance();
    SimpleDateFormat currentDate = new SimpleDateFormat("dd-MMMM-yyyy");
    saveCurrentDate = currentDate.format(calFordDate.getTime());

    postRandomName = String.valueOf(new Date().getTime());

    final String wishlist = spwishlisttitle.getSelectedItem().toString().trim();



    UsersRef.child(currentUserID).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            if (dataSnapshot.exists()) {

                String userFirstname = dataSnapshot.child("fornavn").getValue().toString();
                String userProfileImage = dataSnapshot.child("profilbilde").getValue().toString();

                HashMap postMap = new HashMap();
                postMap.put("uid", currentUserID);
                postMap.put("date", saveCurrentDate);
                postMap.put("title", wishlist);
                postMap.put("profilbilde", userProfileImage);
                postMap.put("fornavn", userFirstname);
                wishListRef.child(currentUserID).child(currentUserID + postRandomName).updateChildren(postMap)
                        .addOnCompleteListener(new OnCompleteListener() {
                            @Override
                            public void onComplete(@NonNull Task task) {

                                if (task.isSuccessful()) {

                                    SendUserToMainActivity();
                                    Toast.makeText(AddWishListActivity.this, "Ønskeliste opprettet", Toast.LENGTH_SHORT).show();

                                } else {

                                    Toast.makeText(AddWishListActivity.this, "Error ocurred", Toast.LENGTH_SHORT).show();

                                }

                            }
                        });

            }

        }

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

        }
    });


}

private void SendUserToMainActivity() {

    Intent mainIntent = new Intent(AddWishListActivity.this, MainWishActivity.class);
    startActivity(mainIntent);
}

}

在此处输入图像描述

我已经用我的代码编辑了我的问题。希望这会有所帮助。

标签: androidfirebase-realtime-databaseandroid-recyclerview

解决方案


推荐阅读