SearchView с onItemClickListener не работает правильно в Android - PullRequest
0 голосов
/ 19 апреля 2020

Я разрабатываю приложение, в котором я буду отображать набор слов в виде списка, и когда пользователь нажимает на элемент, соответствующие сведения будут отображаться в новом действии.

Проблема, с которой я сталкиваюсь теперь список просмотра onitemclickListener работает нормально. Но когда я ищу слова и нажимаю на них, они не показывают правильные данные.

Я приложил код для вашей справки.

Это панель инструментов. java

Панель инструментов. java

    public class Dashboard extends AppCompatActivity {

    ListView listView;
    FirebaseDatabase firebaseDatabase;
    DatabaseReference dreff, ref;
    ArrayList<String> words;
    ArrayList<Word> words2;
    ArrayAdapter<String> adapter;
    Word word;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dashboard);
        listView = (ListView) findViewById(R.id.listView);
        firebaseDatabase = FirebaseDatabase.getInstance();
        dreff = firebaseDatabase.getReference("words");
        ref = firebaseDatabase.getReference("words");
        words = new ArrayList<>();
        words2 = new ArrayList<Word>();
        adapter = new ArrayAdapter<>(Dashboard.this, R.layout.word_info, R.id.word_info_list, words);

        dreff.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot ds: dataSnapshot.getChildren()){
                    word = ds.getValue(Word.class);
                    words.add("" + word.getWord().toString());
                }
                listView.setAdapter(adapter);
            }

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

            }
        });

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                dreff.child(String.valueOf(position+1)).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        //get details of the item
                        String tamildescription = dataSnapshot.child("tamildescription").getValue(String.class);
                        String image = dataSnapshot.child("image").getValue(String.class);
                        String tamilword = dataSnapshot.child("tamilword").getValue(String.class);
                        String word = dataSnapshot.child("word").getValue(String.class);
                        String teluguword = dataSnapshot.child("teluguword").getValue(String.class);
                        String telugudescription = dataSnapshot.child("telugudescription").getValue(String.class);
                        String malayalamword = dataSnapshot.child("malayalamword").getValue(String.class);
                        String malayalamdescription = dataSnapshot.child("malayalamdescription").getValue(String.class);
                        String kannadaword = dataSnapshot.child("kannadaword").getValue(String.class);
                        String kannadadescription = dataSnapshot.child("kannadadescription").getValue(String.class);

                        //open another activity and pass these
                        Intent intent = new Intent(Dashboard.this, Meaning.class);
                        intent.putExtra("WORD", word);
                        intent.putExtra("TAMILDESCRIPTION", tamildescription);
                        intent.putExtra("TAMILWORD", tamilword);
                        intent.putExtra("TELUGUWORD", teluguword);
                        intent.putExtra("TELUGUDESCRIPTION", telugudescription);
                        intent.putExtra("MALAYALAMWORD", malayalamword);
                        intent.putExtra("MALAYALAMDESCRIPTION", malayalamdescription);
                        intent.putExtra("KANNADAWORD", kannadaword);
                        intent.putExtra("KANNADADESCRIPTION", kannadadescription);
                        intent.putExtra("IMAGE", image);
                        startActivity(intent);
                    }

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

                    }
                });
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_file, menu);
        MenuItem item = menu.findItem(R.id.search);
        MenuItem exit_item = menu.findItem(R.id.exit_app);

        exit_item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                finish();
                return false;
            }
        });

        SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
        searchView.setQueryHint("Search");
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
//                adapter.getFilter().filter(newText);
                if (TextUtils.isEmpty(newText)) {
                    listView.clearTextFilter();
                    adapter.getFilter().filter("");
                } else {
                    listView.setFilterText(newText);
                }
                adapter.getFilter().filter(newText);
                return true;
            }
        });
        return super.onCreateOptionsMenu(menu);
    }
}
...