如何获取自动完成文本视图 ID?

How to get autocompletetextview id?

我按照this示例在我的项目中使用autocmpletetextview,我想在用户select任何项目时获取id,谁能告诉我如何获取id..

以下是 json 响应..所以如果点击 ab 我想得到 1,如果我点击 abc 我想得到 2..

主要活动

public class MainActivity extends Activity {
private AutoCompleteTextView acTextView;
private String idtest;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    acTextView = (AutoCompleteTextView) findViewById(R.id.autoComplete);

    final SuggestionAdapter adapter=new SuggestionAdapter(this, acTextView.getText().toString());
    acTextView.setAdapter(adapter);


    acTextView.setOnItemClickListener(new OnItemClickListener() {



        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            JsonParse jps=new JsonParse();

            /* List<SuggestGetSet> list =jps.getParseJsonWCF(acTextView.getText().toString());

                for(int i = 0;i<list.size();i++)
                {
                  if(list.get(i).getName().equals(acTextView.getText().toString()))

                  idtest=list.get(position).getId();



                }
                   */




            SuggestGetSet  selectedSuggestGetSet = 
                     adapter.getAllUpdatedSuggestion().get(position);

            Toast.makeText(getApplicationContext(), selectedSuggestGetSet+acTextView.getText().toString(), Toast.LENGTH_SHORT).show();

        }
    });
}

适配器

public class SuggestionAdapter extends ArrayAdapter<String> {

protected static final String TAG = "SuggestionAdapter";
public List<String> suggestions;
private List<SuggestGetSet> new_suggestions;

public SuggestionAdapter(Activity context, String nameFilter) {
    super(context, android.R.layout.simple_dropdown_item_1line);
    suggestions = new ArrayList<String>();
}

@Override
public int getCount() {
    return suggestions.size();
}

@Override
public String getItem(int index) {
    return suggestions.get(index);
}

@Override
public Filter getFilter() {
    Filter myFilter = new Filter() {

        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            FilterResults filterResults = new FilterResults();
            JsonParse jp=new JsonParse();
            if (constraint != null) {
                // A class that queries a web API, parses the data and
                // returns an ArrayList<GoEuroGetSet>
                new_suggestions =jp.getParseJsonWCF(constraint.toString());
                suggestions.clear();
                for (int i=0;i<new_suggestions.size();i++) {
                    suggestions.add(new_suggestions.get(i).getName());

                }

                // Now assign the values and count to the FilterResults
                // object
                filterResults.values = suggestions;
                filterResults.count = suggestions.size();
            }
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence contraint,
                FilterResults results) {
            if (results != null && results.count > 0) {
                notifyDataSetChanged();
            } else {
                notifyDataSetInvalidated();
            }
        }
    };
    return myFilter;
}

public List<SuggestGetSet>  getAllUpdatedSuggestion(){
      return this.new_suggestions;
    }

} 回应

{"results":[{"id":"1","name":"ab"},{"id":"2","name":"abc"},{"id":"3","name":"bc"},{"id":"4","name":"bcd"},{"id":"5","name":"cd"},{"id":"6","name":"cde"},{"id":"7","name":"ef"},{"id":"8","name":"efg"},{"id":"9","name":"hi"},{"id":"10","name":"hig"},{"id":"11","name":"jk"},{"id":"12","name":"jkl"},{"id":"13","name":"mn"},{"id":"14","name":"mno"},{"id":"15","name":"pq"},{"id":"16","name":"pqr"},{"id":"17","name":"st"},{"id":"18","name":"stu"},{"id":"19","name":"vw"},{"id":"20","name":"vwx"},{"id":"21","name":"yz"},{"id":"22","name":"yza"}]}

将您的建议列表更改为 public :

public List<String> suggestions;

然后在您的 itemClick 方法中获取所需的 ID :

 @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            your id = YourAdapter.suggestions[position].id;

        }

How to get id of autocompletetextview item?

new_suggestions 包含所有想要获得 ListView 项目点击的项目。所以在 getFilter 方法之外声明它以便从其他 class:

访问
private List<String> suggestions;
private List<SuggestGetSet> new_suggestions ;
....

new_suggestionsgetFilter 方法中初始化它:

...
new_suggestions =jp.getParseJsonWCF(constraint.toString());
suggestions.clear();
...

现在在里面创建一个方法 SuggestionAdapter :

public List<SuggestGetSet>  getAllUpdatedSuggestion(){
  return this.new_suggestions;
}

最后在 onItemClick 中调用 getAllUpdatedSuggestion 方法:

final SuggestionAdapter adapter=new SuggestionAdapter(this,
                                acTextView.getText().toString())
acTextView.setAdapter(adapter);

并在 onItemClick 方法中:

   @Override
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
        SuggestGetSet  selectedSuggestGetSet = 
                     adapter.getAllUpdatedSuggestion().get(position);
    }

selectedSuggestGetSet 将包含所选项目 nameid

将一种方法放入适配器中

public Int getItemId(int index) {
    return suggestions.get(index).getId();
}
然后在 onItemClick 中访问它。你将从那里得到 Id adapter.getItemId(位置);

检查这个

List<SuggestGetSet> new_suggestions = jp.getParseJsonWCF(constraint.toString());

并在您的适配器中使用 private List<SuggestGetSet> new_suggestions; 制作一个