AutoCompleteTextView 根据位置从 ArrayList 获取值
AutoCompleteTextView get value from ArrayList based on Position
我在我的程序中使用了 AutoCompleteTextView
,其中显示了来自 JSON 和我的 JSON 的建议 看起来像:
{"areas":[{"area_id":"1","area_name":"Area 1"},{"area_id":"2","area_name":"Area 2"}],"success":1}
这是 AutoCompleteTextView 代码以及 OnItemClick
:
textArea.setAdapter(stringArrayAdapterAreas);
textArea.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// along with name, I also want to fetch Id of that particular area
autoAreaName = (String) parent.getItemAtPosition(position);
Log.d("AreaName:", autoAreaName); // getting accurate area name
if(areaArrayList.contains(autoAreaName)) {
// how to get area id using area name
}
}
});
获取的代码可用Areas
,来自webservice:
if (success == 1) {
JSONArray jsonArray = response.getJSONArray("areas");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Area area = new Area();
area.setId(jsonObject.getInt("area_id"));
area.setName(jsonObject.getString("area_name"));
// adding area to areas array
stringArrayListAreas.add(jsonObject.getString("area_name"));
areaArrayList.add(area);
} // for loop ends
} // if ends
从 JSON 获取两个值(区域 ID 和名称)的最佳方法是什么?
已更新
public String toString(){
return id+":"+name;
}
Activity
textArea.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Area area = new Area();
Log.d("areaData:", area.toString());
}
});
滞后说
D/areaData:: 0:null
What is the best way to get both the values (Area Id and Name) from
JSON ?
最好的方法是使用包含这两种信息的模型 class 将您提供的适配器绑定到 AutoCompleteTextView。例如
public class Model {
public String name;
public String area_id;
public void toString() {
return name;
}
}
您必须更改代码才能使用此 class。在您的 onItemClick
中,您将转换为 Model
而不是 String
,并访问其成员以提取您需要的信息
首先使用适配器中的模型class获取和设置详细信息,然后在itemclicklister上获取数据,如:
((DataModel)listview.getAdapter().getItem(position)).getarea_id();
我在我的程序中使用了 AutoCompleteTextView
,其中显示了来自 JSON 和我的 JSON 的建议 看起来像:
{"areas":[{"area_id":"1","area_name":"Area 1"},{"area_id":"2","area_name":"Area 2"}],"success":1}
这是 AutoCompleteTextView 代码以及 OnItemClick
:
textArea.setAdapter(stringArrayAdapterAreas);
textArea.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// along with name, I also want to fetch Id of that particular area
autoAreaName = (String) parent.getItemAtPosition(position);
Log.d("AreaName:", autoAreaName); // getting accurate area name
if(areaArrayList.contains(autoAreaName)) {
// how to get area id using area name
}
}
});
获取的代码可用Areas
,来自webservice:
if (success == 1) {
JSONArray jsonArray = response.getJSONArray("areas");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Area area = new Area();
area.setId(jsonObject.getInt("area_id"));
area.setName(jsonObject.getString("area_name"));
// adding area to areas array
stringArrayListAreas.add(jsonObject.getString("area_name"));
areaArrayList.add(area);
} // for loop ends
} // if ends
从 JSON 获取两个值(区域 ID 和名称)的最佳方法是什么?
已更新
public String toString(){
return id+":"+name;
}
Activity
textArea.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Area area = new Area();
Log.d("areaData:", area.toString());
}
});
滞后说
D/areaData:: 0:null
What is the best way to get both the values (Area Id and Name) from JSON ?
最好的方法是使用包含这两种信息的模型 class 将您提供的适配器绑定到 AutoCompleteTextView。例如
public class Model {
public String name;
public String area_id;
public void toString() {
return name;
}
}
您必须更改代码才能使用此 class。在您的 onItemClick
中,您将转换为 Model
而不是 String
,并访问其成员以提取您需要的信息
首先使用适配器中的模型class获取和设置详细信息,然后在itemclicklister上获取数据,如:
((DataModel)listview.getAdapter().getItem(position)).getarea_id();