Обработка асинхронного вызова внутри onItemClick()

#android #asynchronous #onitemclick

#Android #асинхронный #onitemclick

Вопрос:

У меня есть реализация onItemClick() при выборе из списка элементов. Однако внутри onItemClick() Мне нужно выполнить проверку с помощью асинхронного вызова библиотеки. В основном внутри onItemClick() выполняется вызов XYZ.CheckConnection(booleanCallback); который является асинхронным. А затем в booleanCallback(состояние int) Я могу проверить статус. Какой шаблон я могу использовать для обработки этого сценария?

Комментарии:

1. Поможет небольшой контекст плюс код. если это задача, связанная с пользовательским интерфейсом, которую вы хотите выполнить при обратном вызове?

2. да, как только я получу результат асинхронного вызова, мне нужно выполнить задачу, связанную с пользовательским интерфейсом.

Ответ №1:

 public class Tester extends Activity {
private ListView list;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            new CheckConnection(list.getAdapter().getItem(position))
                    .execute();

        }
    });
}

private class CheckConnection extends AsyncTask<Void, Void, Void> {
    private Object o;

    public CheckConnection(Object o) {
        this.o = o;
    }

    @Override
    protected void onPreExecute() {
        // Do things like initiate progress bar etc
    }

    @Override
    protected Void doInBackground(Void... params) {
        // Do connection check
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        int status = 0;
        // determine status
        booleanCallBack(status, o);
    }
}

private void booleanCallBack(int status, Object o) {
    // perform UI related
}
}
  

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

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