我在我的程序中使用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
}
}
});
来自 webservice 的获取可用Areas
的代码:
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;
}
活动
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
答案 0 :(得分:1)
从中获取两个值(区域ID和名称)的最佳方法是什么 JSON?
最好的方法是使用包含两个信息的模型类将要提供的适配器绑定到AutoCompleteTextView。 E.g。
public class Model {
public String name;
public String area_id;
public void toString() {
return name;
}
}
您必须更改代码才能使用此类。在您的onItemClick
中,您将投放到Model
而不是String
,并访问其成员以提取您需要的信息
答案 1 :(得分:0)
首先使用适配器中的models类来获取和设置详细信息,然后在itemclicklister上获取数据,如:
((DataModel)listview.getAdapter().getItem(position)).getarea_id();