我想为EditText启用搜索功能。我的要求是这样的: 当某人键入某个字母时,假设用户键入'a',那么它应该显示所有以'a'开头的单词应该显示为下拉列表。例如,如果我第一次在EditText中输入“copy”,如果再次输入EditText并尝试输入“co”,那么它应该显示下拉列表“copy”,“come”,“cow”。 ... 我想启用此功能到我的EditText视图。它工作时,我有一个ListView里面只有一个textview,但现在我有两个textview在我的ListView它不起作用。Android - EditText作为搜索框不起作用
这是我的活动:
public class sedactivity extends Activity {
ListView lview;
ListViewAdapter lviewAdapter;
EditText ed;
private static final String first[] = {
"America",
"Busta",
"Cactus",
"Fire",
"Garden",
"Hollywood",
"King",};
private static final String second[] = {
"Uniti",
"Chiusa",
"Verde",
"Fiamme",
"Aperto",
"Boulevard",
"Kong",};
private ArrayList<String> arr_sort= new ArrayList<String>();
int textlength=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ed = (EditText)findViewById(R.id.EditText1);
lview = (ListView) findViewById(R.id.listView2);
lviewAdapter = new ListViewAdapter(this, first, second);
System.out.println("adapter => "+lviewAdapter.getCount());
lview.setAdapter(lviewAdapter);
lview.setTextFilterEnabled(true);
ed.addTextChangedListener(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) {
textlength=ed.getText().length();
arr_sort.clear();
for(int i=0;i<first.length;i++)
{
if(textlength<=first[i].length())
{
if(ed.getText().toString().equalsIgnoreCase((String) first[i].subSequence(0, textlength)))
{
arr_sort.add(first[i]);
}
}
}
}});}
}
,这是我的ListView适配器
public class ListViewAdapter extends BaseAdapter{
Activity context;
String title[];
String description[];
public ListViewAdapter(Activity context, String[] title, String[] description) {
super();
this.context = context;
this.title = title;
this.description = description;
}
public int getCount() {
// TODO Auto-generated method stub
return title.length;
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
private class ViewHolder {
TextView txtViewTitle;
TextView txtViewDescription;
}
public View getView(int position, View convertView, ViewGroup parent)
{
// TODO Auto-generated method stub
ViewHolder holder;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null)
{
convertView = inflater.inflate(R.layout.listitem_row, null);
holder = new ViewHolder();
holder.txtViewTitle = (TextView) convertView.findViewById(R.id.textView1);
holder.txtViewDescription = (TextView) convertView.findViewById(R.id.textView2);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.txtViewTitle.setText(title[position]);
holder.txtViewDescription.setText(description[position]);
return convertView;
}
}
您必须关注Mahmoud Hossam answer's.Autocompletetextview最适合您的情况。 – Dharmendra
你想为你的清单过滤吗?或下拉建议列表?如果你想要一个建议列表从edittext中下拉,那么你需要使用'AutoCompleteTextView'。这里有一个基本的代码片段 - > http://developer.android.com/reference/android/widget/AutoCompleteTextView.html – Ronnie
我想为我的列表过滤器。例如,如果我在我的ListView上写了“Am”,将只有以“Am”(美国,美国,Amo,Amico ...)开头的单词,然后我可以从ListView中选择一个项目。我不想下拉建议列表,这就是为什么我使用EditText。我的代码工作时,只有一个最后的字符串,现在我有两个,并不起作用。有没有解决方法?一个例子或一些代码?谢谢。 – Valerio