Java AutoCompleteTextView-选择名称时获取Id
我从api(我存储在模型中的带有Id的名称列表)获取值-如何将此名称设置为自动完成,并在下拉选择中获取名称和Id。 这将在autocomplete中设置名称,并在onItemClick中获取名称,但如何获取ID 模型类Java AutoCompleteTextView-选择名称时获取Id,java,android,autocompletetextview,Java,Android,Autocompletetextview,我从api(我存储在模型中的带有Id的名称列表)获取值-如何将此名称设置为自动完成,并在下拉选择中获取名称和Id。 这将在autocomplete中设置名称,并在onItemClick中获取名称,但如何获取ID 模型类 public class MeetingContactModel implements Serializable { private String id; private String text; public String g
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类
一旦创建:
调用自动完成适配器
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));
}
setMeetingContactAuto(自动联系,联系人列表);
autoContact.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
strContact=(字符串)parent.getItemAtPosition(位置);
//strContactCode=code.get(位置);
}
});
private void SetMeeting ContactAuto(自动完成文本视图自动连接,最终ArrayList xcontactList){
列表名称=新的AbstractList(){
@凌驾
public int size(){return xcontactList.size();}
@凌驾
公共字符串get(int i){
code.clear();
add(xcontactList.get(i.getText());
返回xcontactList.get(i.getText();
}
};
自动联系设置阈值(1);
setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,names));
}
无法获取Id-请让我知道如何获取它在模型类中实现toString()方法
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();
}
});
公共类MeetingContactModel实现可序列化{
私有字符串id;
私有字符串文本;
公共字符串getId(){
返回id;
}
公共无效集合id(字符串id){
this.id=id;
}
公共字符串getText(){
返回文本;
}
公共void setText(字符串文本){
this.text=文本;
}
@凌驾
公共字符串toString(){
返回文本;
}
}
//获取您选择的模型
setAdapter(新的ArrayAdapter(requireContext(),R.layout.spinner\u item\u ranking,contactList));
autoContact.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
MeetingContactModel m=(MeetingContactModel)parent.getItem(position);
String name=m.getText();
字符串id=m.getId();
}
});
您是否遇到任何错误为AutoCompleteTextView创建自定义适配器“但是如何获取ID”
?查看传递给onItemClick
method的最后一个参数如何更改为parent.getItemAtPosition(position)
到contactList.get(position).getId()
@Emil OP说:“这将在自动完成中设置名称,并在onItemClick中获取名称,但如何获取ID?”
-所以我想他想把ID放在里面onimclick
会试试这个&让你知道MeetingContactModel m=(MeetingContactModel)parent.getItem(position);它显示一个异常,因为无法解析方法“getItem(int)”!!!有什么想法吗?将getItem(int)更改为getItemAtPosition(int)后,它就可以工作了-谢谢@RajasekaranM@ArnoldBrown如果有效,接受答案并向上投票。@ArnoldBrown您可以从适配器对象调用getItem()
。这就是为什么它会出现。为适配器创建对象并调用`getItem(位置)