ОБНОВЛЕНИЕ:
Я обнаружил проблему, проблема может быть вызвана получением содержимого адаптера из набора настроек SQL. Теперь я публикую здесь свой код getLockerList ().
Я протестировал функцию с длинной строкой
"asdajdnajkdaadasdaajd najkdaadasdaajdnajkdaadasdaajdnajkdaadasdaajdnaj kdaadasdaajdnajkdaadasdasdas"
, и она все еще могла работать отлично, так что теперь я предполагаю, что проблема возникает, когда Я получил данные.
Я установил счетчик с помощью arrayadapter. Содержимое адаптера взято из запроса MySQL.
Я получил данные и успешно создал адаптер, но когда я пытаюсь показать, какой элемент был выбран пользователем, он ничего не показывает после нажатия на элемент.
Я попытался добавить системную распечатку, чтобы выяснить проблему, в конце концов я обнаружил, что проблема в том, что слушатель даже не вызывает вызов, независимо от значения onItemSelected или onNothingSelected
Я думаю, что могу найти проблема сейчас, мой список просмотра хранится в другом месте, который очень длинный String. Я попытался изменить содержимое адаптера на «тест», и он работает отлично. Теперь проблема в том, могу ли я отобразить длинную строку?
Вот мой код:
public class PlaceOrderActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
private Spinner from_spinner;
private ArrayList<String> locker_list = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_place_order);
getLockerList();
from_spinner = (Spinner) findViewById(R.id.from_spinner);
from_spinner.setVisibility(View.VISIBLE);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,locker_list);
from_spinner.setAdapter(adapter);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
from_spinner.setOnItemSelectedListener(this);
}
private void getLockerList() {
// Response received from the server
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonResponse = new JSONArray(response);
//JSONObject jsonObject = jsonResponse.getJSONObject(0);
if (jsonResponse!=null) {
// System.out.println(jsonResponse);
for (int i=0;i< jsonResponse.length();i++)
{
JSONObject jsonObject = jsonResponse.getJSONObject(i);
String location = jsonObject.getString("location1")+" "+jsonObject.getString("location2")+" "+jsonObject.getString("location3");
locker_list.add(location);
}
} else {
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
Response.ErrorListener errorListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println(error);
}
};
getLoockerLocationRequest request = new getLoockerLocationRequest(responseListener,errorListener);
RequestQueue queue = Volley.newRequestQueue(PlaceOrderActivity.this);
queue.add(request);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
System.out.println("selected item");
Toast.makeText(parent.getContext(),from_spinner.getSelectedItem().toString(),
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
System.out.println("nothing select");
String no_selected_value = "Select the location";
Toast.makeText(parent.getContext(),no_selected_value,
Toast.LENGTH_SHORT).show();
}
}