2012-10-07 61 views
2

我有LinearLayoutEditTextListView。我正在使用EditText來篩選ListView。當我第一次顯示屏幕並且軟鍵盤自動彈出時,過濾工作正常。當我輸入鍵入的字母不會顯示在EditText中。如果我點擊EditText,我鍵入的字母會顯示出來,但不會進入過濾器。就好像那裏有2 EditTextAndroid 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消失了。

+0

我很高興你明白了,因爲你最初發布的代碼是正確的。無論如何,你應該把「回答」編輯作爲答案,並接受它來標記這個問題已解決。 – Sam

回答

0

只是重申我上面的評論,現在已經過了8個小時。我想通了什麼事:

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

在我的OnCreate我的片段,它是把另一種觀點認爲的「真正的」一頂。我真的不知道爲什麼,但我知道解決它。我認爲這是類似的東西,只是搜索我對視圖的每一個參考,在我去的時候發表評論。

如果有人想解釋,請隨意!

+0

如果這可以解決您的問題,請檢查它的正確答案。 –

+0

正在工作....需要再等7個小時 – mary