Android - AutoCompleteTextView как окно поиска не работает - PullRequest
1 голос
/ 09 декабря 2011

Я хотел бы включить функцию поиска в AutoCompleteTextView.Мое требование таково: когда кто-то печатает с какой-то буквой, предположим, что пользователь вводит «а», тогда он должен показывать все слова, которые начинаются с «а», должны отображаться в выпадающем списке.Например, если я сначала набрал «copy» в AutoCompleteTextView, если я снова очистил AutoCompleteTextView и попытался напечатать «co», то он должен показать выпадающий список «copy», «come», «cow».... Я хочу включить эту функцию в моем представлении AutoCompleteTextView.Это работало, когда у меня был ListView с только текстовым представлением внутри, но теперь, когда у меня есть два текстовых представления в моем ListView, оно не работает.

Это моя деятельность:

public class sedactivity extends Activity {


ListView lview;
ListViewAdapter lviewAdapter;
AutoCompleteTextView acTV;

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

acTV = (AutoCompleteTextView)findViewById(R.id.acTV);
lview = (ListView) findViewById(R.id.listView2);
lviewAdapter = new ListViewAdapter(this, first, second);


System.out.println("adapter => "+lviewAdapter.getCount());

lview.setAdapter(lviewAdapter);

lview.setTextFilterEnabled(true);



acTV.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=acTV.getText().length();
        arr_sort.clear();
        for(int i=0;i<first.length;i++)
        {
        if(textlength<=first[i].length())
        {
        if(acTV.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;}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...