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);
现在,当您设置此侦听器时,您可以分别使用 getItem
或 get
方法从 spinnerAdapter
或 spinnerData
访问数据,使用 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);
}
尽管有以下代码教程,但我找不到任何有效的代码来解决我的问题。
我想在用户在微调器中选择一个项目时使用吐司,然后他们会得到 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);
现在,当您设置此侦听器时,您可以分别使用 getItem
或 get
方法从 spinnerAdapter
或 spinnerData
访问数据,使用 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);
}