Я разрабатываю приложение, в котором я буду отображать набор слов в виде списка, и когда пользователь нажимает на элемент, соответствующие сведения будут отображаться в новом действии.
Проблема, с которой я сталкиваюсь теперь список просмотра 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);
}
}