Arnold Brown
Arnold Brown

Reputation: 1433

AutoCompleteTextView - Get Id when select Name

I am getting the values from api(which list of Names with Id which i stored in model)- How to set this Name to AutoComplete and get both Name and Id on dropdown selection. This will set a Name in autocomplete and getting name at onItemClick but how to get ID?

Model class

public class MeetingContactModel implements Serializable {

        private String id;
        private String text;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getText() {
            return text;
        }

        public void setText(String text) {
            this.text = text;
        }
}

MyActivity class OnCreate : calling autocomplete adapter

setMeetingContactAuto(autoContact, contactList);

autoContact.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                strContact =(String) parent.getItemAtPosition(position);
//                strContactCode = code.get(position);
            }
        });

private void setMeetingContactAuto(AutoCompleteTextView autoContact, final ArrayList<MeetingContactModel> xcontactList) {

        List<String> names = new AbstractList<String>() {
            @Override
            public int size() { return xcontactList.size(); }

            @Override
            public String get(int i) {
                code.clear();
                code.add(xcontactList.get(i).getText());
                return xcontactList.get(i).getText();
            }
        };
        autoContact.setThreshold(1);
        autoContact.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names));
    }

Not able to get Id - Please let me know to get it

Upvotes: 0

Views: 1601

Answers (1)

Rajasekaran M
Rajasekaran M

Reputation: 2538

Implement toString() method in your model class

 public class MeetingContactModel implements Serializable {

    private String id;
    private String text;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    @Override
    public String toString() {
        return text;
    }

}


 // Fetch your selected model
 autoContact.setAdapter(new ArrayAdapter<>(requireContext(),  R.layout.spinner_item_ranking, contactList));
 autoContact.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
             MeetingContactModel m=(MeetingContactModel) parent.getItem(position);
             String name=m.getText();
             String id=m.getId();
            }
        });

Upvotes: 2

Related Questions