Я могу заполнить свой счетчик своей базой данных, но я не могу показать выбранный элемент

Я работаю над небольшим проектом в студии Android, и у меня есть проблема: я использую ArrayAdapter для получения информации из кода JSON, и теперь я могу отображать данные, но когда я выбираю элемент, он не отображается в отображение счетчика, надеюсь, вы поможете мне с этим, вот мой код:

public class Asistencia extends AppCompatActivity implements AdapterView.OnItemSelectedListener{

    ProgressDialog progressDialog;
    private String END_POINT_URL = "http://192.168.0.6:1434/Bitacora/Usuarios.php";
    private Spinner p1;
    private List<String> listu =new ArrayList<String>();
    private String[] listu1 = new String [100];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_asistencia);

        progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Por favor espere...");
        progressDialog.setCancelable(false);

        p1 = (Spinner) findViewById(R.id.spinnerUsuario);
        ArrayAdapter<String>dataAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, listu);

        dataAdapter.setDropDownViewResource(android.R.layout.simple_list_item_1);
        p1.setAdapter(dataAdapter);


        p1.setOnItemSelectedListener(this);
        dataAdapter.notifyDataSetChanged();

        callRegisterSpinnerU();
    }
    @Override public void onItemSelected(AdapterView parent, View view, int position, long id) {

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    private void callRegisterSpinnerU()
    {
        progressDialog.show();

        final AsyncHttpClient client = new AsyncHttpClient();

        client.post(END_POINT_URL, new AsyncHttpResponseHandler(){

            @Override
            public void onSuccess(int statusCode, String content) {
                progressDialog.hide();


                try {

                    JSONObject obj = new JSONObject(content);
                    final JSONArray jsonArray = obj.getJSONArray("users");
                    int length = jsonArray.length();
                    for (int i = 0; i < length; i++)
                    {
                        JSONObject user = jsonArray.getJSONObject(i);
                        listu.add(user.getString("Usuario"));

                    }
                }catch(JSONException e){
                    Toast.makeText(getApplicationContext(), "Error al enviar su solicitud, Verifique el Json" + e.toString(), Toast.LENGTH_LONG).show();
                }
            }
            @Override
            public void onFailure(int statusCode, Throwable error, String content) {
                progressDialog.hide();

                if(statusCode == 404){
                    Toast.makeText(getApplicationContext(), "No se envio la solicitud", Toast.LENGTH_LONG).show();
                }
                else if(statusCode == 500){
                    Toast.makeText(getApplicationContext(), "Algo ocurrio al final", Toast.LENGTH_LONG).show();
                }
                else{
                    Toast.makeText(getApplicationContext(), "Error: El dispositivo tal vez no este conectado a la red o el server se encuentra sin funcionar", Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

когда я пытаюсь выбрать элемент из счетчика, я получаю это сообщение в логарифме:

12-09 00:24:56.063 8171-8171/com.example.crisis.bitacora W/InputEventReceiver: попытка завершить событие ввода, но приемник события ввода уже удален.

Извините за мой плохой английский :(.


person Jackmukade    schedule 09.12.2016    source источник


Ответы (2)


Вы не уведомили dataAdapter, когда listu Changed;

Попробуйте вызвать dataAdapter.notifyDataSetChanged(); при успешном получении данных из сети.

person Mick    schedule 09.12.2016
comment
Спасибо за ответ, я изменил свой dataAdapter, и это сработало. Большое спасибо. :D - person Jackmukade; 10.12.2016

Просто добавь :

  public void onItemSelected(AdapterView parent, View view, int position, long id) {


    p1.setSelection(position);
    }
person Aldi Renaldi Gunawan    schedule 09.12.2016
comment
Спасибо за ответ, но проблема была не в нем, в любом случае в другом проекте я учту ваш совет. :D - person Jackmukade; 10.12.2016