2013-02-07 42 views
1

我按照這個教程http://www.androidpeople.com/android-listview-searchbox-sort-items,我有搜索工作在列表上。我想做的唯一更改是最初隱藏列表視圖,並且僅當用戶開始鍵入時纔會顯示結果。有沒有辦法做到這一點?隱藏Android ListView直到搜索字符串被輸入

編輯:添加的代碼。

package com.example.testapp; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 

public class MainActivity extends Activity { 
/** Called when the activity is first created. */ 
private ListView lv1; 
private EditText ed; 
private String lv_arr[]= {"Android","Cupcake","Donut","Eclairs","AndroidPeople","Froyo",}; 
private ArrayList<String> arr_sort= new ArrayList<String>(); 
int textlength=0; 
@Override 
public void onCreate(Bundle icicle) 
{ 
super.onCreate(icicle); 
setContentView(R.layout.activity_main); 
lv1=(ListView)findViewById(R.id.ListView); 
ed=(EditText)findViewById(R.id.EditText01); 
// By using setAdpater method in listview we an add string array in list. 
lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr)); 
ed.addTextChangedListener(new TextWatcher() { 

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

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

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

textlength=ed.getText().length(); 
arr_sort.clear(); 
for(int i=0;i<lv_arr.length;i++) 
{ 
if(textlength<=lv_arr[i].length()) 
{ 
if(ed.getText().toString().equalsIgnoreCase((String) lv_arr[i].subSequence(0, textlength))) 
{ 
arr_sort.add(lv_arr[i]); 
} 
} 
} 

lv1.setAdapter(new ArrayAdapter<String> (MainActivity.this,android.R.layout.simple_list_item_1 , arr_sort)); 

} 
}); 
} 




@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

} 

回答

1

我會做這樣的:

EditText etSearch = (EditText) getView().findViewById(R.id.etSearch); 
    etSearch.addTextChangedListener(new TextWatcher(){ 
      public void afterTextChanged(Editable s) { 
       if(view.getVisibility() != View.Visible) 
         view.setVisiblity(View.Visible); 
      } 
      public void beforeTextChanged(CharSequence s, int start, int count, int after){} 
      public void onTextChanged(CharSequence s, int start, int before, int count){} 
     }); 
+0

這仍然不是爲我工作 - 你可以看到我在做什麼錯? – user1410747

+0

這是現在工作,但是當我試圖將代碼到另一個項目中,我得到一個空指針異常導致由以下行 – user1410747

+0

lv1.setAdapter(new ArrayAdapter (this,android.R.layout.simple_list_item_1,lv_arr) ); – user1410747

相關問題