1

私はこのチュートリアルhttp://www.androidpeople.com/android-listview-searchbox-sort-itemsに従っており、リストで検索を行っています。私が加えたい唯一の変更は、最初はリスト ビューを非表示にし、ユーザーが入力を開始したときにのみ結果が表示されるようにすることです。これを行う方法はありますか?

編集: コードを追加しました。

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

}
4

1 に答える 1

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){}
        }); 
于 2013-02-07T11:48:58.960 に答える