2017-02-15 20 views
1

に検索文字列が挿入されている場合にのみlistViewを表示します。入力されたテキストがある場合には、リストビューが表示されます検索文字列が入力された場合にのみリストビューを表示

mSearchTw = new TextWatcher() { 
     @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if (s != null && s.toString().trim().length() > 0) { 
      mSearchNFilterLv.setVisibility(View.VISIBLE); 
     } else { 
      mSearchNFilterLv.setVisibility(View.GONE); 
     } 
     } 

     @Override public void afterTextChanged(Editable s) { 

     } 
    }; 

:以下は、あなたは以下のコードを使用することができます

public class MainActivity extends AppCompatActivity { 
    private ListView mSearchNFilterLv; 

    private EditText mSearchEdt; 

    private ArrayList<String> mStringList; 

    private ValueAdapter valueAdapter; 

    private TextWatcher mSearchTw; 
    /** 
    * ATTENTION: This was auto-generated to implement the App Indexing API. 
    * See https://g.co/AppIndexing/AndroidStudio for more information. 
    */ 
    private GoogleApiClient client; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     initUI(); 

     initData(); 

     valueAdapter = new ValueAdapter(mStringList, this); 

     mSearchNFilterLv.setAdapter(valueAdapter); 

     mSearchEdt.addTextChangedListener(mSearchTw); 


     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 
    } 


    private void initData() { 

     mStringList = new ArrayList<String>(); 

     mStringList.add("one"); 

     mStringList.add("two"); 

     mStringList.add("three"); 

     mStringList.add("four"); 

     mStringList.add("five"); 

     mStringList.add("six"); 

     mStringList.add("seven"); 

     mStringList.add("eight"); 

     mStringList.add("nine"); 

     mStringList.add("ten"); 

     mStringList.add("eleven"); 

     mStringList.add("twelve"); 

     mStringList.add("thirteen"); 

     mStringList.add("fourteen"); 

     mSearchTw = new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

       valueAdapter.getFilter().filter(s); 
      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
              int after) { 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       if(mSearchEdt.getVisibility() != View.VISIBLE) 
        mSearchEdt.setVisibility(View.VISIBLE); 
      } 
     }; 

    } 

    private void initUI() { 

     mSearchNFilterLv = (ListView) findViewById(R.id.list_view); 

     mSearchEdt = (EditText) findViewById(R.id.txt_search); 
    } 
} 

答えて

0

...私は非常に義務を負うことになる私を助けてください...私のコードです(EditTextにテキストを入力している間)、テキストに1つ以上の文字がある場合。

リストビューには挿入が終わったときにのみ変更したい場合は移動afterTextChanged

PSにonTextChanged内の指定されたコード:あなたは、クエリのリスナーにSearchViewの代わりのEditTextと同じ構造を使用することができます。助けのための

private void initUI() { 
    mSearchNFilterLv = (ListView) findViewById(R.id.list_view); 
    mSearchEdt = (EditText) findViewById(R.id.txt_search); 
    mSearchNFilterLv.setVisibility(View.GONE); 
} 
+0

どうもありがとうサー...しかし、アプリが開いたときに、それはまだリストビューの内容を見せている:あなたが最初にリストビューを非表示にするコードの下に使用することができます

を更新しました

最初に...あなたもそれで私を助けてくれますか... –

+0

@ManujSankrit更新された答えを確認 – rencsaridogan

+0

ありがとうございましたサー...それはうまくいった...大きな助け –

関連する問題