Ich baue eine sehr einfache App: Ich habe eine Liste, sobald Sie auf ein Element dieser Liste klicken, erhalten Sie einen Warndialog mit mehr Informationen über das angeklickte Element.ListView Indizierung und SearchView
Ich habe eine Filtersuchfunktion implementiert und es funktioniert ziemlich gut, aber es gibt ein großes Problem: Sagen wir, Sie Text auf der Suchleiste "1" und Sie erhalten auf dem Bildschirm alle Elemente beginnend mit 1, also: 1, 11, 12, 13, 14, 15 etc.
Sobald Sie auf das zweite Element der neuen Liste klicken, erhalten Sie R.layout.11
aber Sie erhalten R.layout.2
grundsätzlich, weil der Code 11 als das zweite Element der Liste mit ID erkennen wird == 1 und nicht der 11. Artikel mit ID == 12.
Offensichtlich geht es nicht nur um den zweiten Artikel, sondern um alle Artikel der gefilterten Liste. Kann mir jemand bei diesem Problem helfen? Hast du eine Idee, wie du es lösen kannst? Ich bin sehr neu für Android App Entwicklung, ich weiß wenig über Java, ich bin nur zu lernen, ich danke Ihnen für Ihre Geduld.
@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();
}
}
});
}