아주 기본적인 응용 프로그램을 구축 중입니다. 목록이 있으면 해당 목록의 항목을 클릭하면 클릭 한 항목에 대한 자세한 정보가 포함 된 경고 대화 상자가 나타납니다.ListView 색인 생성 및 SearchView
필자는 필터 검색 기능을 구현했지만 매우 잘 작동하고 있지만 큰 문제가 있습니다. 검색 막대의 텍스트를 "1"로 설정하고 1부터 시작하는 모든 항목을 화면에 표시한다고 가정 해 봅시다. 1, 11, 12, 13, 14, 15 등
새 목록의 두 번째 항목을 클릭하면 R.layout.11
이 표시되지 않지만 R.layout.2
을 얻게됩니다. 코드는 11을 ID가있는 목록의 두 번째 항목으로 인식하기 때문입니다 == 1이고 id == 12 인 11 번째 항목이 아닙니다.
분명히 두 번째 항목 만이 아니라 필터링 된 목록의 모든 항목입니다. 누군가이 문제를 도와 줄 수 있습니까? 그것을 해결하는 방법에 대해 알고 있습니까? 저는 Android 앱을 개발하는 데있어 매우 익숙합니다. 자바에 대해 거의 알지 못합니다. 배우고 있습니다. 양해 해 주셔서 감사합니다.
@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();
}
}
});
}