Добавить клик к результатам TextWatcher

Я пытаюсь создать параметр поиска с помощью TextWatcher On listview. После того, как результаты показаны, как сделать результаты кликабельными? Я могу добавить Onitemclick в список, но это не помогает, это не делает результаты кликабельными.


person Mayank Khursija    schedule 02.08.2015    source источник
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
comment
Но, щелкнув элемент списка, он не переходит к другому действию во время поиска. - person Mayank Khursija; 02.08.2015
comment
В адаптере попробуйте использовать textView onClick и TextView onClick(), чтобы установить выделенный текст в EditText - person Maheshwar Ligade; 03.08.2015
comment
не могу понять. пожалуйста, опишите @MaheshwarLigade - person Mayank Khursija; 03.08.2015
comment
в адаптере Это не оптимизированный способ, но это решение textView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // установить выбранное значение в Editext } } - person Maheshwar Ligade; 03.08.2015