Volley + AlertDialog
Добавлено: 03 мар 2014, 17:27
Всем привет.
Мне нужно реализовать список в диалоговом меню, который формируется исходя из ответа сервера. С джавой только начинаю знакомится, поэтому и такая банальна проблема...
Делаю так:
В результате при нажатии на кнопочку получаю пустое диалоговое окно, но при нажатии на ОК во всплывающем окошке вижу верный результат.
Подскажите, пожалуйста, что я делаю не так?
Или ссылочку где почитать...
Мне нужно реализовать список в диалоговом меню, который формируется исходя из ответа сервера. С джавой только начинаю знакомится, поэтому и такая банальна проблема...
Делаю так:
Код: Выделить всё
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.app.Activity;
import android.content.DialogInterface;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
public class MainActivity extends Activity {
public ArrayList<String> genres = new ArrayList<String>();
public ArrayList<Boolean> list = new ArrayList<Boolean>();
private final int IDD_CHECK_GENRES = 3;
private String TAG = this.getClass().getSimpleName();
private RequestQueue mRequestQueue;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.genre:
showDialog(IDD_CHECK_GENRES);
break;
}
}
public void parseJSON(JSONObject json){
try{
JSONObject value = json.getJSONObject("value");
JSONArray items = value.getJSONArray("items");
for(int i=0;i<items.length();i++){
JSONObject item = items.getJSONObject(i);
genres.add(item.optString("title"));
}
}
catch(Exception e){
e.printStackTrace();
}
}
public void GetGenres(){
mRequestQueue = Volley.newRequestQueue(this);
String url = "http://some.site/android_app?genres=list2";
pd = ProgressDialog.show(this,"Please Wait...","Please Wait...");
JsonObjectRequest jr = new JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
parseJSON(response);
pd.dismiss();
; }
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i(TAG,error.getMessage());
}
});
mRequestQueue.add(jr);
}
public Dialog onCreateDialog(int id) {
switch (id) {
case IDD_CHECK_GENRES:
GetGenres();
AlertDialog.Builder builder;
builder = new AlertDialog.Builder(MainActivity.this);
for(int i=0; i<genres.size(); i++){
list.add(false);
}
builder.setTitle("TITLE")
.setCancelable(false)
.setMultiChoiceItems(genres.toArray(new CharSequence[genres.size()]), null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
list.set(which, isChecked);
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getApplicationContext(), genres.get(0) , Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("neOK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
}
});
return builder.create();
default:
return null;
}
}
}
Подскажите, пожалуйста, что я делаю не так?
Или ссылочку где почитать...