私のアプリのネットワークリクエストを処理するためにマルチスピナー& Android Volley Libraryを使用していますが、サーバーからの応答があってもスピナーが応答しません、応答がスピナーにボレーの応答から移入取得されていない、助けてください... 私のコードはAndroid SpinnerにJSONデータが設定されていませんVolley Response
StringRequest stringRequest = new StringRequest(Request.Method.GET, IP.IP+"/api/users/view_group", new com.android.volley.Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Toast.makeText(Room_Config.this, response, Toast.LENGTH_SHORT).show();
String text=response;
System.out.println(response);
try {
JSONObject obj = new JSONObject(response);
String strMessage = (String) obj.get("message");
JSONArray jarray = new JSONArray(strMessage);
for (int i = 0; i < jarray.length(); i++) {
JSONObject obj1 = jarray.getJSONObject(i);
//id= (int) obj1.get("group_id");
list1.add((int) obj1.get("group_id"));
list.add((String) obj1.get("group_name"));
map.put((String) obj1.get("group_name"), (Integer) obj1.get("group_id"));}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (error instanceof TimeoutError) {
Toast.makeText(Room_Config.this,"Request Time-Out", Toast.LENGTH_SHORT).show();
} else if (error instanceof NoConnectionError) {
Toast.makeText(Room_Config.this,"No Connection Found", Toast.LENGTH_SHORT).show();
} else if (error instanceof ServerError) {
Toast.makeText(Room_Config.this,"Server Error", Toast.LENGTH_SHORT).show();
} else if (error instanceof NetworkError) {
Toast.makeText(Room_Config.this,"Network Error", Toast.LENGTH_SHORT).show();
} else if (error instanceof ParseError) {
Toast.makeText(Room_Config.this,"Parse Error", Toast.LENGTH_SHORT).show();
}
}
});
stringRequest.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 1,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(stringRequest);
System.out.println("Group Name List is" + list);
System.out.println("\nGroup id list is---> " + list1);
et1 = (EditText) findViewById(R.id.et1);
et2 = (EditText) findViewById(R.id.et2);
et3 = (EditText) findViewById(R.id.et3);
et1.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.toString().length()<3) {
if (!validateNo()) {
return;
}
}else {
inputLayoutNo.setErrorEnabled(false);
}
}
});
et2.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (!validateName()) {
return;
}
}
});
et3.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (!validateDesc()) {
return;
}
}
});
if (list.isEmpty()){ Toast.makeText(Room_Config.this,"Request Time-Out", Toast.LENGTH_SHORT).show();}
// TreeMap<String, Boolean> items = new TreeMap<>();
HashMap<String,Boolean> items=new HashMap<>();
for (String item : list) {
items.put(item, Boolean.FALSE);
}
MultiSpinner simpleSpinner = (MultiSpinner) findViewById(R.id.room_spinner);
simpleSpinner.setItems(items, new MultiSpinner.MultiSpinnerListener() {
@Override
public void onItemsSelected(boolean[] selected) {
mylist.clear();
nlist.clear();
// your operation with code...
for (int i = 0; i < selected.length; i++) {
if (selected[i]) {
Log.i("TAG", i + " : " + list.get(i));
System.out.println("Selected Item is----->" + list.get(i));
mylist.add(list.get(i));
System.out.println("My List is\t" + mylist);
}
}
for (int j = 0; j < mylist.size(); j++) {
objh = map.get(mylist.get(j));
myIntArray = map.get(mylist.get(j));
nlist.add(myIntArray);
System.out.println("New Id List is-------->" + nlist);
}
}
});
を下回っている。これは、私が使用しMultispinnerクラスです.....
を助けてください
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.util.AttributeSet;
import android.widget.ArrayAdapter;
import com.rey.material.widget.Spinner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.TreeMap;
public class MultiSpinner extends Spinner implements OnMultiChoiceClickListener, OnCancelListener {
private List<String> items;
private boolean[] selected;
private String defaultText = "Click to Select Group";
private MultiSpinnerListener listener;
public MultiSpinner(Context context) {
super(context);
}
public MultiSpinner(Context arg0, AttributeSet arg1) {
super(arg0, arg1);
}
public MultiSpinner(Context arg0, AttributeSet arg1, int arg2) {
super(arg0, arg1, arg2);
}
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
selected[which] = isChecked;
}
@Override
public void onCancel(DialogInterface dialog) {
// refresh text on spinner
StringBuilder spinnerBuffer = new StringBuilder();
for (int i = 0; i < items.size(); i++) {
if (selected[i]) {
spinnerBuffer.append(items.get(i));
spinnerBuffer.append(", ");
}
}
String spinnerText = "";
spinnerText = spinnerBuffer.toString();
if (spinnerText.length() > 2) {
spinnerText = spinnerText.substring(0, spinnerText.length() - 2);
} else {
spinnerText = defaultText;
}
ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(),
R.layout.textview_for_spinner,
new String[]{spinnerText});
setAdapter(adapter);
if (selected.length > 0) {
listener.onItemsSelected(selected);
}
}
@Override
public boolean performClick() {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(defaultText);
builder.setMultiChoiceItems(
items.toArray(new CharSequence[items.size()]), selected, this);
builder.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.setOnCancelListener(this);
builder.show();
return true;
}
/**
* Sets items to this spinner.
* @param items A HashMap where the keys are the values to display in the spinner
* and the value the initial selected state of the key.
* @param listener A MultiSpinnerListener.
*/
public void setItems(HashMap<String, Boolean> items,
MultiSpinnerListener listener) {
this.items = new ArrayList<>(items.keySet());
this.listener = listener;
List<Boolean> values = new ArrayList<>(items.values());
selected = new boolean[values.size()];
for (int i = 0; i < items.size(); i++) {
selected[i] = values.get(i);
}
// all text on the spinner
ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(),
R.layout.textview_for_spinner, new String[]{defaultText});
setAdapter(adapter);
// Set Spinner Text
onCancel(null);
}
public interface MultiSpinnerListener {
void onItemsSelected(boolean[] selected);
}
}
で述べたように、対応するPHPファイルは次のように何を見ていますか? –
@ChrisGong PHPを使用していない、ただjava –
'simpleSpinner'に' Adapter'を渡してください。 –