2016-08-24 64 views
-1

我在我的程序中使用AutoCompleteTextView,在這裏我顯示從JSON和我JSON建議得到ArrayList中值的樣子:AutoCompleteTextView基於位置

{"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,從web服務

 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

是的。我知道我犯了一些錯誤,這個問題確實值得消極評分...但是我仍然很開心,因爲我嘗試了我所得到的,現在我正在尋找建議/指導方針 – Oreo

回答

1

從 JSON獲取兩個值(區域ID和名稱)的最佳方式是什麼?

最好的方法是將您正在饋送到AutoCompleteTextView的適配器與包含兩個信息的模型類綁定。例如。

public class Model { 
    public String name; 
    public String area_id; 

    public void toString() { 
     return name; 
    } 
} 

你將不得不改變你的代碼來使用這個類。在您的onItemClick你會轉換爲Model,而不是String,並訪問其成員提取所需的信息

+0

請檢查上面的UPDATED部分,我發佈了我的試圖按照你教授 – Oreo

+0

的方式獲取信息,如果你用Area對象餵食適配器,你將不得不使用'Area area =(Area)parent.getItemAtPosition(position);' – Blackbelt

+0

真的很抱歉,但仍然得到:java。 lang.ClassCastException:java.lang.String不能轉換 – Oreo

0

首次使用適配器模型類來獲取和設置的詳細信息,然後坐上itemclicklister數據,如:

((DataModel)listview.getAdapter().getItem(position)).getarea_id();