Я пытаюсь создать параметр поиска с помощью TextWatcher On listview. После того, как результаты показаны, как сделать результаты кликабельными? Я могу добавить Onitemclick в список, но это не помогает, это не делает результаты кликабельными.
Добавить клик к результатам TextWatcher
comment
используйте 1_
- person pskink   schedule 02.08.2015
comment
@pskink правильно, вам нужен AdapterView.OnItemClickListener.
- person Adarsh Yadav   schedule 02.08.2015
comment
@AdarshYadav Не могли бы вы привести пример ?? я раньше не реализовывал..
- person Mayank Khursija   schedule 02.08.2015
comment
@MayankKhursija Посмотрите этот ответ stackoverflow.com/a/20355499/1384010
- person Adarsh Yadav   schedule 02.08.2015
comment
Не работает ... Тем не менее я не могу перейти к новому активному элементу, нажимая элемент списка путем фильтрации. @AdarshYadav
- person Mayank Khursija   schedule 03.08.2015
Ответы (1)
Попробуйте использовать приведенный ниже код для справки.
public class AndroidListViewFilterActivity extends Activity {
ArrayAdapter<String> dataAdapter = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Generate list View from ArrayList
displayListView();
}
private void displayListView() {
//Array list of countries
List<String> countryList = new ArrayList<String>();
countryList.add("India");
// .. добавить сюда несколько стран
//create an ArrayAdaptar from the String Array
dataAdapter = new ArrayAdapter<String>(this,
R.layout.country_list, countryList);
ListView listView = (ListView) findViewById(R.id.listView1);
// Assign adapter to ListView
listView.setAdapter(dataAdapter);
//enables filtering for the contents of the given ListView
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(),
((TextView) view).getText(), Toast.LENGTH_SHORT).show();
}
});
EditText myFilter = (EditText) findViewById(R.id.myFilter);
myFilter.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
dataAdapter.getFilter().filter(s.toString());
}
});
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:padding="10dp"
android:text="@string/some_text" android:textSize="20sp" />
<EditText android:id="@+id/myFilter" android:layout_width="match_parent"
android:layout_height="wrap_content" android:ems="10"
android:hint="@string/some_hint">
<requestFocus />
</EditText>
<ListView android:id="@+id/listView1" android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
файл row.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp" >
</TextView>
Этот код работает нормально для меня.
person
Maheshwar Ligade
schedule
02.08.2015
Но, щелкнув элемент списка, он не переходит к другому действию во время поиска.
- person Mayank Khursija; 02.08.2015
В адаптере попробуйте использовать textView onClick и TextView onClick(), чтобы установить выделенный текст в EditText
- person Maheshwar Ligade; 03.08.2015
не могу понять. пожалуйста, опишите @MaheshwarLigade
- person Mayank Khursija; 03.08.2015
в адаптере Это не оптимизированный способ, но это решение textView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // установить выбранное значение в Editext } }
- person Maheshwar Ligade; 03.08.2015