2017-02-15 2 views
1

Ich möchte die listView nur angezeigt werden, wenn ein Suchstring in die EditText eingefügt wird. Unten ist mein Code ... Bitte helft mir ich sehr dankbar, würde ...Zeige die Listview nur, wenn die Suchzeichenkette eingegeben wird

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); 
    } 
} 

Antwort

0

Sie den Code unten verwenden:

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) { 

     } 
    }; 

das Listview Dies wird zeigen, wenn eine eingegebene Text ist (wenn Sie Text in EditText eingeben) und wenn Text 1 oder mehr Zeichen enthält.

Wenn Sie Listview wollen nur geändert werden, wenn das Einsetzen vorbei bewegen die gegebene Code in onTextChanged zu afterTextChanged

PS: Sie können die gleiche Struktur mit Suche anstelle von EditText mit Abfrage Hörer.

Aktualisiert

Sie unter Code verwenden können Listview verstecken zunächst:

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

Vielen Dank Sir für die Hilfe ... Aber es ist immer noch den Inhalt der Listenansicht zeigt, wenn die App öffnet anfänglich ... Können Sie mir bitte auch dabei helfen ... –

+0

@ManujSankrit Überprüfen Sie die aktualisierte Antwort – rencsaridogan

+0

Vielen Dank Sir .... Es hat gut funktioniert ... Große Hilfe –

Verwandte Themen