我有LinearLayout
一个EditText
和一个ListView
。我正在使用EditText
来过滤ListView
. 当我第一次显示屏幕并且软键盘自动弹出时,过滤工作正常。当我键入时,键入的字母不会显示在EditText
. 如果我点击EditText
,我输入的字母会显示,但不会进入过滤器。好像那里有2个EditText
。
这是我的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 消失了。