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