ArrayAdapter 未在 ListView 中显示添加的元素,Android Studio
ArrayAdapter not showing added elements in ListView, Android Studio
我最近在我的应用程序的菜单中添加了一个 SearchView 元素,它可以正确过滤我的 ListView 中的元素。问题出现在我搜索某些东西之后,事实上,如果我尝试向我的 ListView 添加一个元素,它不会显示该元素。
添加的元素实际上在我的代码中进入 ArrayList 内部,我通过调试工具检查了它。有什么想法吗?
这是我的 SearchView 的 OnQueryTextListener:
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
adapter.getFilter().filter(s);
return true;
}
});
我认为是 ArrayAdapter 的问题。如果您需要更多详细信息,我可以在此处 post。
编辑#1
数组适配器:
adapter = new ArrayAdapter<Contatto>(this, android.R.layout.simple_list_item_1, r.arr);
rubrica.setAdapter(adapter);
添加元素方法:
public void Aggiungi(View view){
String n,c,t;
n = editNome.getText().toString();
c = editCognome.getText().toString();
t = editNumero.getText().toString();
if(!PhoneNumberUtils.isGlobalPhoneNumber("+39" + t) || (t.length() < 8) ){
Toast.makeText(this, "Inserisci un numero internazionale valido.", Toast.LENGTH_SHORT).show();
return;
}
r.aggiungiContatto(n , c , t); //C'è qualcosa che non va nel filtrare i tutto.
adapter.notifyDataSetChanged();
}
r 是包含 ArrayList 的对象。 “aggiungiContatto”方法是:
public void aggiungiContatto(String nome, String cognome, String numeroCell){
Contatto c=new Contatto(nome, cognome, numeroCell);
arr.add(c);
}
应该够了。
以下可能是解决方法,请尝试:
@Override
public boolean onQueryTextChange(String s) {
adapter.getFilter().filter(s);
if (s.equals("")) {
adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_expandable_list_item_1, r.arr);
rubrica.setAdapter(adapter);
}
return true;
}
我最近在我的应用程序的菜单中添加了一个 SearchView 元素,它可以正确过滤我的 ListView 中的元素。问题出现在我搜索某些东西之后,事实上,如果我尝试向我的 ListView 添加一个元素,它不会显示该元素。 添加的元素实际上在我的代码中进入 ArrayList 内部,我通过调试工具检查了它。有什么想法吗?
这是我的 SearchView 的 OnQueryTextListener:
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
adapter.getFilter().filter(s);
return true;
}
});
我认为是 ArrayAdapter 的问题。如果您需要更多详细信息,我可以在此处 post。
编辑#1
数组适配器:
adapter = new ArrayAdapter<Contatto>(this, android.R.layout.simple_list_item_1, r.arr);
rubrica.setAdapter(adapter);
添加元素方法:
public void Aggiungi(View view){
String n,c,t;
n = editNome.getText().toString();
c = editCognome.getText().toString();
t = editNumero.getText().toString();
if(!PhoneNumberUtils.isGlobalPhoneNumber("+39" + t) || (t.length() < 8) ){
Toast.makeText(this, "Inserisci un numero internazionale valido.", Toast.LENGTH_SHORT).show();
return;
}
r.aggiungiContatto(n , c , t); //C'è qualcosa che non va nel filtrare i tutto.
adapter.notifyDataSetChanged();
}
r 是包含 ArrayList 的对象。 “aggiungiContatto”方法是:
public void aggiungiContatto(String nome, String cognome, String numeroCell){
Contatto c=new Contatto(nome, cognome, numeroCell);
arr.add(c);
}
应该够了。
以下可能是解决方法,请尝试:
@Override
public boolean onQueryTextChange(String s) {
adapter.getFilter().filter(s);
if (s.equals("")) {
adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_expandable_list_item_1, r.arr);
rubrica.setAdapter(adapter);
}
return true;
}