首页 > 解决方案 > BaseAdapter - 如何使用 notifyItemRemoved

问题描述

我有一个负责我的 SwipeCardView 的 BaseAdapter。现在我需要添加类似这样的内容notifyItemRemoved来删除一个特定项目并显示新列表。我需要在 AlertDialog 部分的代码底部删除该项目。一切正常,只是我不知道如何删除它。不幸的是,我找不到正确的语法。仅供参考,我删除了构造函数等方法以保持帖子小:


public class FeedAdapter extends BaseCardAdapter {
private List<EventObject> ideen;

private Activity context;
@Override
public void onBindData(final int position, View cardview) {
    if (ideen.size() ==0 || ideen == null){
        return;
    }
    ImageView bild = cardview.findViewById(R.id.imageView);
    TextView name = cardview.findViewById(R.id.name);
    final EventObject eo = ideen.get(position);
    name.setText(eo.getName());
    TextView adress = cardview.findViewById(R.id.address);
     Geocoder geocoder;
     List<Address> addresses = null;
     geocoder = new Geocoder(context, Locale.getDefault());

    try {
        addresses = geocoder.getFromLocation(Double.parseDouble(eo.getLat()), Double.parseDouble(eo.getLng()), 1); // Here 1 represent max location result to returned, by documents it recommended 1 to 5
    } catch (IOException e) {
        e.printStackTrace();
    }

    String address = addresses.get(0).getAddressLine(0); // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex()
    String city = addresses.get(0).getLocality();
    String state = addresses.get(0).getAdminArea();
    String country = addresses.get(0).getCountryName();
    String postalCode = addresses.get(0).getPostalCode();
    String knownName = addresses.get(0).getFeatureName();
    String[] separatedadress = address.split(",");

    adress.setText(separatedadress[0]+" , "+city);

    TextView date = cardview.findViewById(R.id.date);
    date.setText(eo.getDate());

    Button teilnehmen = cardview.findViewById(R.id.teilnehmen);
    teilnehmen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String userid = FirebaseAuth.getInstance().getCurrentUser().getUid();
            DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(userid).child("acceptedEvents").child(eo.getId());
            ref.setValue(true);
            getPLZ(eo.getId(), eo, position);

        }
    });

            bild.setImageResource(R.drawable.blau);



}

private void getPLZ(final String id, final EventObject eo, final int position) {
String userid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(userid).child("plz");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String plz = dataSnapshot.getValue().toString();
        setParticipantInEvent(plz, id, eo, position);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

}

private void setParticipantInEvent(String plz, String id, EventObject eo, int position){
    String userid = FirebaseAuth.getInstance().getCurrentUser().getUid();

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Events").child(plz).child(id);
    ref.child("participants").child(userid).setValue(true);

    askForCalendar(eo, position);
}

private void askForCalendar(final EventObject eventObject, final int position) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setMessage("Event in deinem Kalender speichern?")
            .setCancelable(false)
            .setPositiveButton("Ja", new 
             DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {



                    Intent intent = new Intent(Intent.ACTION_EDIT);
                    intent.setType("vnd.android.cursor.item/event");
                    intent.putExtra("beginTime", Long.parseLong(eventObject.getTs()));
                    intent.putExtra("allDay", true);
                    intent.putExtra("endTime", Long.parseLong(eventObject.getTs())+60*60*1000);
                    intent.putExtra("title", eventObject.getName());
                    context.startActivity(intent);

                }
                })
            .setNegativeButton("Nein", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                //Here i have to remove one item:

                    dialog.cancel();

                }
            });
    AlertDialog alert = builder.create();
    alert.show();
        }


      }

标签: javaandroidbaseadapter

解决方案


推荐阅读