Je construis une application très basique: J'ai une liste, une fois que vous cliquez sur un élément de cette liste, vous obtenez une boîte de dialogue d'alerte avec plus d'informations sur l'élément cliqué. J'ai implémenté une fonction de recherche de filtre et ça marche plutôt bien mais il y a un gros problème: disons du texte dans la barre de recherche "1" et vous obtenez à l'écran tous les éléments commençant par 1, donc: 1, 11, 12, 13, 14, 15 etc.ListView indexation et SearchView
Lorsque vous cliquez sur le deuxième élément de la nouvelle liste, vous n'obtiendrez pas R.layout.11
== 1 et non le 11e élément avec id == 12.
De toute évidence, il ne s'agit pas uniquement du second élément, mais de tous les éléments de la liste filtrée. Quelqu'un peut-il m'aider avec ce problème? Avez-vous une idée sur la façon de le résoudre? Je suis très nouveau à l'application Android en développement, je sais peu de choses sur Java, je suis en train d'apprendre, je vous remercie pour votre patience.
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_max);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_max);
final String[] nameproducts = new String[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
// ArrayList
final ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < nameproducts.length; ++i) {
list.add(nameproducts[i]);
}
final ListView mylist = (ListView) findViewById(R.id.listView1);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
sv=(SearchView) findViewById(R.id.searchView1);
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String text) {
return false;
}
@Override
public boolean onQueryTextChange(String text) {
adapter.getFilter().filter(text);
return false;
}
});
mylist.setAdapter(adapter);
mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> testo, View v, int pos, long id) {
if (id == 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(MaxActivity.this);
builder.setCancelable(true);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.1, null);
builder.setView(view);
builder.show();
}
if (id == 1) {
AlertDialog.Builder builder = new AlertDialog.Builder(MaxActivity.this);
builder.setCancelable(true);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.2, null);
builder.setView(view);
builder.show();
}
if (id == 2) {
AlertDialog.Builder builder = new AlertDialog.Builder(MaxActivity.this);
builder.setCancelable(true);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.3, null);
builder.setView(view);
builder.show();
}
}
});
}