私は非常に基本的なアプリケーションを構築しています:リストを持っていれば、そのリストの項目をクリックすると、クリックされた項目の詳細情報を含む警告ダイアログが表示されます。ListView indexing and SearchView
フィルター検索機能を実装しましたが、問題はありますが、検索バーのテキストを1とし、1から始まるすべての項目を画面に表示すると、1、11、 012,123,139,141,12,13,14,15など
R.layout.11
の2番目の項目をクリックすると、R.layout.2
が得られます。これは、コードがidを持つリストの2番目の項目として認識するためです== 1で、id == 12の11番目のアイテムではありません。
明らかに、2番目のアイテムだけではなく、フィルタリングされたリストのすべてのアイテムです。誰かがこの問題で私を助けることができますか?どのように解決するか考えていますか? 私はAndroidアプリケーションの開発には非常に新しいです、私はJavaについて少し知っています、私はちょうど学んでいます、あなたの忍耐ありがとう。
@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();
}
}
});
}