我在旋转器中选择一件物品时遇到麻烦,它只是选择了该物品。
这是它加载时的样子 pict 1
然后这是我在选择项目时所显示的内容 pict 2
但是当我选择一个项目时,它没有被选中(如图1所示) 这是我的代码
activity_grade_chooser.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
tools:context=".GradeChooserActivity">
<TextView
android:id="@+id/txtClass"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignTop="@+id/spClass"
android:layout_gravity="left"
android:layout_marginLeft="10dp"
android:text="Class" />
<Spinner
android:id="@+id/spClass"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/txtClass"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:prompt="@string/spinner_class_name"
android:entries="@array/array_semester"
android:spinnerMode="dropdown" />
<TextView
android:id="@+id/txtSemester"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/spClass"
android:layout_gravity="left"
android:layout_marginTop="5dp"
android:layout_marginLeft="10dp"
android:text="Semester" />
<Spinner
android:id="@+id/spSemester"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/spClass"
android:layout_alignStart="@+id/spClass"
android:layout_below="@+id/spClass"
android:layout_marginTop="5dp"
android:prompt="@string/spinner_class_name"
android:entries="@array/array_semester"
android:spinnerMode="dropdown" />
<Button
android:id="@+id/btnGenerate"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_below="@+id/spSemester"
android:text="Generate"
android:textSize="6pt"
android:layout_marginLeft="10dp"
android:textStyle="bold"
android:textColor="@color/White"
android:background="@color/GentleBlue"
android:layout_gravity="center"/>
</RelativeLayout>
这就是活动
GradeChooserActivity.java
import android.app.ProgressDialog;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import com.android.volley.DefaultRetryPolicy;
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.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
public class GradeChooserActivity extends AppCompatActivity {
static ProgressDialog loading;
private static final String LogTAG = GradeChooserActivity.class.getSimpleName();
static ArrayList<StudentAndClass> ClassList = new ArrayList<>();
ArrayAdapter<String> spinnerAdapter;
Spinner spClass, spSemester;
List<String> labels = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grade_chooser);
Log.e(LogTAG, "Loaded");
spClass = (Spinner) findViewById(R.id.spClass);
spSemester = (Spinner) findViewById(R.id.spSemester);
JSON_POST_onLoad(this);
populateSpinner();
}
private void populateSpinner() {
spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spClass.setAdapter(spinnerAdapter);
}
void JSON_POST_onLoad(final Context ctx){
ClassList.clear();
labels.clear();
String url = GlobalVariable.URL + "Criteria.php";
Log.e(LogTAG, "JSON_POST_onLoad Start. URL : " + url);
loading = ProgressDialog.show(ctx,"Loading Data...","Please wait...",false,false);
RequestQueue queue = Volley.newRequestQueue(ctx);
StringRequest postRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
// response
Log.e(LogTAG, "JSON POST onResponse : " + response);
try {
Log.e(LogTAG, "Start Try JSON - " + response.toString());
JSONObject jsObj = new JSONObject(response);
String result = jsObj.getString("result");
if (!result.equals("Valid")) {
Log.e(LogTAG, "Failed");
} else {
JSONArray jsArr = jsObj.getJSONArray("query_result");
Log.e(LogTAG, "Valid 0");
for (int i = 0; i < jsArr.length(); i++) {
JSONObject jsObj2 = jsArr.getJSONObject(i);
Log.e(LogTAG, "Valid 1");
labels.add(jsObj2.optString("class_name"));
Log.e(LogTAG, "lstUserIndex JSON value : " + jsObj2.optString("class_name"));
}
Log.e(LogTAG, "JSON Ended");
}
loading.dismiss();
} catch (JSONException e) {
e.printStackTrace();
loading.dismiss();
}
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
// error
Log.e(LogTAG, "JSON POST onResponse : " + error.toString());
loading.dismiss();
}
}
) {
@Override
protected Map<String, String> getParams()
{
Map<String, String> params = new HashMap<String, String>();
params.put("command","Class By Student ID");
params.put("student_id",GlobalVariable.StudentID);
return params;
}
};
postRequest.setRetryPolicy(new DefaultRetryPolicy(
(int) TimeUnit.SECONDS.toMillis(20),
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(postRequest);
}
}
第一个微调器下方的第二个微调器(学期)工作得很好,因为我事先设置了条目。 谁能帮我这个? 或者,除了微调器之外,是否有人有任何使用除了下拉之外的提示?
答案 0 :(得分:0)
尝试将labels.add行之后的populateSpinner()方法设置为
/:
为什么你的代码不起作用是因为(Nil /:[List[Int]] li)((a, b) => b :: a)
是异步的,并且在你的数据从服务器到达之前你正在填充微调器。
或替代
保持您的代码不变,只需在您的labels.add
之后添加此行 labels.add(jsObj2.optString("class_name"));
populateSpinner();