EditText에 검색 기능을 사용하고 싶습니다. 내 요구 조건은 다음과 같습니다. 누군가가 문자를 입력하면 사용자가 'a'를 입력하면 'a'로 시작하는 모든 단어가 드롭 다운 목록으로 표시되어야합니다. 예를 들어 EditText에 "copy"를 처음 입력 한 경우 EditText를 지우고 "co"를 입력하려고하면 "copy", "come", "cow"드롭 다운 목록이 표시됩니다. ... 내 EditText보기에이 기능을 사용 가능하게하고 싶습니다. 그것은 내부에있는 textview 함께 ListView 있었을 때 작동하지만 지금은 내 ListView 두 textview 작동하지 않습니다. 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을 따라야합니다. 답변 .Autocompletetextview가 귀하의 사례에 가장 적합합니다. – Dharmendra
목록에 필터를 원하십니까? 또는 드롭 다운 제안 목록? edittext에서 추천 목록을 드롭하려면 'AutoCompleteTextView'를 사용해야합니다. 기본 코드 스 니펫은 여기에 있습니다 -> http://developer.android.com/reference/android/widget/AutoCompleteTextView.html – Ronnie
내 목록에 대한 필터를 원합니다. 예를 들어, "ListView"에 "Am"을 쓴다면 "Am"(America, American, Amo, Amico ...)으로 시작하는 단어 만 표시되고 ListView에서 하나의 항목을 선택할 수 있습니다. 제안 목록을 드롭 다운하지 않기 때문에 EditText를 사용했습니다. 마지막 문자열이 하나 밖에 없을 때 코드가 작동했습니다. 이제 두 개가 작동하고 작동하지 않습니다. 어떤 해결책이 있습니까? 예 또는 일부 코드? 고맙습니다. – Valerio