Listview的onItemClickListener被自动调用

时间:2018-08-28 15:45:49

标签: android listview onitemclicklistener

我的活动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);
      }
     }

0 个答案:

没有答案