【问题标题】:Android EditText Not showing typed letters used for Filtering ListAdapter ListViewAndroid EditText 不显示用于过滤 ListAdapter ListView 的键入字母
【发布时间】:2012-09-27 17:08:54
【问题描述】:

我有一个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

EDIT:当activity启动并弹出软键盘时,我可以看到可视的EditText没有焦点。我必须以某种方式定义隐藏在第一个后面的第二个。

编辑——回答: 我想到了。在这个片段的 OnCreate 方法中,我有:

    getActivity().setContentView(R.layout.beer_listview);

我猜这是在创建第二个视图。当我将其注释掉时,第二个 EditText 消失了。

【问题讨论】:

  • 我很高兴你明白了,因为你最初发布的代码是正确的。无论如何,您应该将“已回答”编辑作为答案并接受它以将此问题标记为已解决。

标签: android listview filter android-edittext


【解决方案1】:

现在已经过去了 8 小时,重申我上面的评论。我知道发生了什么:

 getActivity().setContentView(R.layout.beer_listview);

在我的片段的 OnCreate 中,它在“真实”视图之上放置了另一个视图。我真的不知道为什么,但我知道评论修复它。我认为是这样的,只是搜索了我对该视图的每一个引用,并在我去的时候注释掉。

如果有人想解释,请随意!

【讨论】:

    猜你喜欢
    • 2015-08-25
    • 2017-12-12
    • 2016-04-30
    • 1970-01-01
    • 2013-08-23
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多