【发布时间】:2020-09-12 23:09:31
【问题描述】:
这是关于微调器的。他从一个 ArrayList 中获取他的数据,后者从一个 http 请求中获取您的数据。 http请求是json格式的,会做相应的转换。
package de.it18b.saufomat;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
public TextView mTextViewResult;
ArrayList<String> tester;
public MainActivity() throws IOException {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tester=new ArrayList<>();
try {
run("http://111.111.111.1/helloWorld");
} catch (IOException e) {
e.printStackTrace();
}
}
public void btnc1(View view) throws IOException {
run("http://111.111.111.1/helloWorld");
}
public void btnc2(View view) throws IOException {
run("http://111.111.111.1/helloWorld");
}
public void run(String url) throws IOException {
mTextViewResult = findViewById(R.id.text_view_result);
Spinner spinner = findViewById(R.id.spinner1);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
final String myResponse = response.body().string();
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
JSONObject jsonObject=new JSONObject(myResponse);
String test0 = jsonObject.toString();
tester.clear();
tester.add(0,"Auswählen");
JSONArray jsonArray=jsonObject.getJSONArray("data");
for(int i=0; i < jsonArray.length(); i++) {
tester.add(jsonArray.getString(i));
}
mTextViewResult.setText(test0);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
}
});
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, tester);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String text = parent.getItemAtPosition(position).toString();
Toast.makeText(parent.getContext(), text, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
问题是微调器不直接显示内容,虽然它在应用启动时被填充。如果我点击小箭头,条目在里面但无法选择。如果我再次点击button2(Bestellen)并执行请求(包括在微调器中插入),第一个条目显示正确,您可以选择其他数据。
有人有解决办法吗? 非常感谢
附上一段视频,帮助你理解问题
【问题讨论】:
标签: java android android-studio spinner android-spinner