0
當用戶點擊位置元素,然後應用程序填充警報對話框來選擇位置,這些位置來自於PHP服務器open。下面是我已經使用的代碼。創建動態警報對話框有多個選項來選擇
宣言
final String locations[] = new String[100];
final String locations_id[] = new String[100];
onPostExecute
jObj = new JSONObject(json);
JSONArray locations_resp = jObj.getJSONArray("Locations");
JSONArray manufacturer_resp = jObj.getJSONArray("Manufacturers");
for(int i=0;i<locations_resp.length();i++)
{
JSONObject c = locations_resp.getJSONObject(i);
int id = c.getInt("id");
String name = c.getString("title");
locations[i]=name;
locations_id[i]=id+"";
//Log.d("Locations","Id ="+id+" name = "+name);
}
onclick事件
location_ele.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Select Location");
builder.setItems(locations, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// the user clicked on colors[which]
location_ele.setText(locations[which]);
location=locations_id[which].toString();
}
});
builder.show();
}
});
屏幕截圖
觀察屏幕。位置隨着一些空值隨機出現,只有4個位置來自API.Please建議我程序如何創建此位置列表動態與空值請注意我已創建位置爲固定大小的數組。
謝謝你的建議@Kalem –
我試過了你的代碼,但是新的錯誤發生在 'builder.setItems(locations.toArray(),new DialogInterface.OnClickListener()'說「把第一個參數拋到java.lang。 CharSequence []'「@Kalem –
我的不好,使用第二個建議你需要定義一個Adapter並使用'AlertDialog.Builder.setAdapter(ListAdapter adapter,DialogInterface.OnClickListener listener)'而不是'AlertDialog.Builder.setItems(CharSequence [] items,DialogInterface.OnClickListener listener)'。因此,如果你不想定義一個適配器(你應該如果你想自定義行視圖)堅持第一個建議。 – Kalem