我有LinearLayout
EditText
和ListView
。我正在使用EditText
來篩選ListView
。當我第一次顯示屏幕並且軟鍵盤自動彈出時,過濾工作正常。當我輸入鍵入的字母不會顯示在EditText
中。如果我點擊EditText
,我鍵入的字母會顯示出來,但不會進入過濾器。就好像那裏有2 EditText
。Android EditText不顯示用於過濾ListAdapter的打印字母ListView
這裏是我的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="wrap_content"
android:orientation="vertical"
android:paddingBottom="6dip"
android:paddingTop="4dip" >
<EditText
android:id="@+id/search_box"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLines="1"
android:textSize="17dip" />
<ListView
android:id="@+id/beerListViewID"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" >
</ListView>
</LinearLayout>
這是我建立了TextWatcher:
@Override public void onLoadFinished(Loader<ArrayList<BeerRecord>> loader,
ArrayList<BeerRecord> beers) {
// Set the new data in the adapter.
ListView listView = (ListView) getActivity().findViewById(R.id.beerListViewID);
myAdapter = new BeerItemAdapter(getActivity(), R.layout.beerline, beers);
filterText = (EditText) getActivity().findViewById(R.id.search_box);
filterText.addTextChangedListener(filterTextWatcher);
listView.setAdapter(myAdapter);
}
而且TextWatcher:
private TextWatcher filterTextWatcher = 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) {
myAdapter.getFilter().filter(s);
}
};
我應該發佈更多的代碼?任何人都有一個想法,爲什麼似乎有2 EditText
?
編輯:當活動開始並彈出軟鍵盤時,我可以看到可查看的EditText沒有焦點。我必須以某種方式定義第二個隱藏在第一個之後的第二個。
編輯 - 答案: 我想通了。在這個片段的OnCreate方法我有:
getActivity().setContentView(R.layout.beer_listview);
我想這是創建第二個視圖。當我評論出第二個EditText消失了。
我很高興你明白了,因爲你最初發布的代碼是正確的。無論如何,你應該把「回答」編輯作爲答案,並接受它來標記這個問題已解決。 – Sam