Android - IF 语句在从 JSON 获取 Textview 时使用 Spinner

Android - IF Statement using Spinner while Textview obtained from JSON

尽管有以下代码教程,但我找不到任何有效的代码来解决我的问题。

我想在用户在微调器中选择一个项目时使用吐司,然后他们会得到 this json link

我的代码:

private void requestJsonObject(){
        RequestQueue queue = Volley.newRequestQueue(this);
        StringRequest stringRequest = new StringRequest(Request.Method.GET, PATH_TO_SERVER, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                GsonBuilder builder = new GsonBuilder();
                Gson mGson = builder.create();
                spinnerData = Arrays.asList(mGson.fromJson(response, DataObject[].class));
                //display first question to the user
                spinner = (Spinner) findViewById(R.id.spinner);
                assert spinner != null;
                spinner.setVisibility(View.VISIBLE);
                SpinnerAdapter spinnerAdapter = new SpinnerAdapter(MainActivity.this, spinnerData);
                spinner.setAdapter(spinnerAdapter);
                spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        String Text = parent.getSelectedItem().toString();
                        if(Text.equals("ardi halim")){
                            Toast.makeText(MainActivity.this,"Testing", Toast.LENGTH_LONG).show();
                        }
                        else if(Text.equals("indah")){
                            Toast.makeText(MainActivity.this,"Testing Indah", Toast.LENGTH_LONG).show();
                        }
                    }

为什么当我点击 ardi halim 时我的 toast 没有显示在屏幕上??

我的代码有什么问题?

感谢建议编辑的@mmmartinnn

基本上,如果 if 语句不起作用,那么 String Text = parent.getSelectedItem().toString(); 不是您所期望的,您应该 Log-ing 该值以查看它的实际值。


这是获取您在微调器上选择的数据的另一种方法。

在 Volley 请求外部声明适配器和侦听器。

private SpinnerAdapter spinnerAdapter;
private Spinner spinner;
private List<DataObject> spinnerData = new ArrayList<DataObject>();

private static final GsonBuilder GSON_BUILDER = new GsonBuilder();
private final Gson mGson = GSON_BUILDER.create();

public void onCreate(Bundle b) {
   ...

    //display first question to the user
    spinner = (Spinner) findViewById(R.id.spinner);
    assert spinner != null;
    spinner.setVisibility(View.VISIBLE);

    spinnerAdapter = new SpinnerAdapter(MainActivity.this, spinnerData);
    spinner.setAdapter(spinnerAdapter);

现在,当您设置此侦听器时,您可以分别使用 getItemget 方法从 spinnerAdapterspinnerData 访问数据,使用 int position获取选中的数据。

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            // For example
            DataObject selected = spinnerData.get(position);
            String namaDosen = selected.getNama_dosen();

            if(namaDosen.equals("ardi halim")){
                Toast.makeText(MainActivity.this,"Testing", Toast.LENGTH_LONG).show();
            }

        }
    });
}

此外,不要忘记在某个时候致电 requestJsonObject()

而且,您只需更新 volley 请求中的微调器数据和适配器,而不是重新创建适配器并为每个 volley 请求设置侦听器。

private void requestJsonObject(){
    RequestQueue queue = Volley.newRequestQueue(this);
    StringRequest stringRequest = new StringRequest(Request.Method.GET, PATH_TO_SERVER, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            spinnerData.clear();
            spinnerData.addAll(Arrays.asList(mGson.fromJson(response, DataObject[].class)));
            spinnerAdapter.notifyDataSetChanged();
        }
    });

    queue.add(stringRequest);
}