SetOnItemClickListener в адаптере Groupie не работает - PullRequest
0 голосов
/ 21 июня 2019

Я использую groupie lib, чтобы показать элементы, которые я извлекаю из базы данных Firebase. Но когда я хочу сделать setOnItemClickListener в адаптере Groupie, ничего не происходит

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("/users");
    ref.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            adapter = new GroupAdapter();

            for (DataSnapshot ds:dataSnapshot.getChildren()) {
                Userinfo user = ds.getValue(Userinfo.class);
                if(user !=null)
                adapter.add(new ContactItem(user));
            }

            newmessage_recyclerview.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
            newmessage_recyclerview.addItemDecoration(new DividerItemDecoration(getApplicationContext(),DividerItemDecoration.VERTICAL));
            newmessage_recyclerview.setAdapter(adapter);

            adapter.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(@NonNull Item item, @NonNull View view) {
                    Log.d("main", String.valueOf(item.getId()));
                }
            });

        }

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

        }
    });

1 Ответ

0 голосов
/ 21 июня 2019

Ваш адаптер и просмотр списка должны быть инициализированы и назначены за пределами onDataChange() method, как вы можете видеть, каждый раз, когда ваши данные из базы данных Firebase меняются, адаптер будет меняться, а список просмотра настраивается повторно, он является избыточным. Попробуйте это.

//set up adapter and listview one time only
adapter = new GroupAdapter();
newmessage_recyclerview.setLayoutManager(new 
LinearLayoutManager(getApplicationContext()));
newmessage_recyclerview.addItemDecoration(new 
DividerItemDecoration(getApplicationContext(),DividerItemDecoration.VERTICAL));
newmessage_recyclerview.setAdapter(adapter);

adapter.setOnItemClickListener(new OnItemClickListener() {
     @Override
     public void onItemClick(@NonNull Item item, @NonNull View view) {
          Log.d("main", String.valueOf(item.getId()));
     }
});

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("/users");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

          for (DataSnapshot ds:dataSnapshot.getChildren()) {
               Userinfo user = ds.getValue(Userinfo.class);
               if(user !=null)
               adapter.add(new ContactItem(user));
               adapter.notifyDataSetChanged();
          }
      }

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

      }
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...