0

I follow this example to use autocmpletetextview in my project,i want to get id when user select any item,can anyone tell how to get id..

following is json response..so if click on ab then i want to get 1,if i click on abc i want to get 2..

MainActivity

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

        }
    });
}

adapter

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

} response

{"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"}]}
Aditya Vyas-Lakhan
  • 13,409
  • 16
  • 61
  • 96

4 Answers4

4

Put one method in adapter

public Int getItemId(int index) {
    return suggestions.get(index).getId();
}
Then access it in onItemClick. You will getId from there by adapter.getItemId(position);
Arth Tilva
  • 2,496
  • 22
  • 40
1

How to get id of autocompletetextview item?

new_suggestions contains all items which want to get on ListView item click. so declare it outside getFilter method for access from other class:

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

new_suggestions initilize it inside getFilter method:

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

Now create a method inside SuggestionAdapter :

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

and finally inside onItemClick call getAllUpdatedSuggestion method:

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

and in onItemClick method:

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

selectedSuggestGetSet will contains selected item name and id

ρяσѕρєя K
  • 132,198
  • 53
  • 198
  • 213
0

Change your suggestions list to public :

public List<String> suggestions;

And then get the desired id in your itemClick method :

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

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

        }
Adrien Cerdan
  • 1,005
  • 1
  • 11
  • 21
0

check this

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

and make one with private List<SuggestGetSet> new_suggestions; in your adapter

Agilanbu
  • 2,747
  • 2
  • 28
  • 33