2015-08-02 2 views
0

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

+1

использование 'AdapterView.OnItemClickListener' – pskink

+0

@pskink правильно, вам нужен AdapterView.OnItemClickListener. –

+0

@AdarshYadav Просьба привести пример? Я еще не реализовал до этого. –

ответ

0

Попробуйте использовать нижеследующий код для справки.

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> 

Этот код работает отлично для меня ,

+0

Но нажав на элемент listview, он не будет выполнять другую операцию во время поиска. –

+0

В адаптере попробуйте использовать textView onClick & TextView onClick(), чтобы установить выделенный текст в EditText –

+0

. Не могу получить его. опишите, пожалуйста, @MaheshwarLigade –

Смежные вопросы