我的活动B有一个日期列表,如果用户需要,可以将其删除。这些日期是从活动A获得的,活动A以日期作为输入,此后调用活动B,该活动显示了输入日期的列表。在活动B中触发OnitemClickListener时,日期将被删除。问题是删除日期后,如果我转到活动A并再次输入相同的删除日期,活动B将自动调用OnitemClickListener而不会触发列表项。我检查了堆栈溢出中的所有答案,但大多数OnitemClickListener是针对Spinners的,其解决方案对我没有帮助。任何帮助表示赞赏。
public class B extends AppCompatActivity implements AdapterView.OnItemClickListenerprotected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter1 = new ArrayAdapter < String > (this, R.layout.subject_list_heading, R.id.tv_sub_heading,
Headings);
list_of_date.setAdapter(adapter1);
list_of_date.setOnItemClickListener(this);
get_date_list(databaseReference);
}
@Override
public void onItemClick(AdapterView << ? > parent, View view, int position, long id) {
TextView date_click = view.findViewById(R.id.tv_sub_heading);
child_pres = view.findViewById(R.id.tv_child_pres);
final TextView buttonViewOption = (TextView) view.findViewById(R.id.textViewOptions);
child_pres.setVisibility(View.VISIBLE);
date_clicked = date_click.getText().toString();
databaseReference.child("Date_wise_distribution").child(date_clicked).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
try {
//retrieve data from database
} catch (NullPointerException ex) {
onRestart();
}
buttonViewOption.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final PopupMenu popup = new PopupMenu(Attendance_Summary.this, buttonViewOption);
MenuInflater inflater = popup.getMenuInflater();
final Menu pop = popup.getMenu();
inflater.inflate(R.menu.menu_recycle, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(final MenuItem item) {
switch (item.getItemId()) {
case R.id.edit:
break;
case R.id.delete:
delete();
//handle menu1 click
return true;
}
return true;
}
});
popup.show();
}
});
public void delete() {
DatabaseReference dataRef = databaseReference.child("Date_wise_distribution").child(date_clicked);
try {
//do something
dataRef.removeValue();
} catch (NullPointerException ex) {
onRestart();
}
}
public void get_date_list(DatabaseReference databaseReference) {
ChildEventListener childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
adapter1.add(dataSnapshot.getKey());
adapter1.notifyDataSetChanged();
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
adapter1.notifyDataSetChanged();
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
adapter1.remove(dataSnapshot.getKey());
adapter1.notifyDataSetChanged();
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
databaseReference.child("Date_wise_distribution").addChildEventListener(childEventListener);
}
}