处理onItemClick()中的异步调用

时间:2014-06-19 18:42:31

标签: android asynchronous onitemclick

我从项目列表中选择时有onItemClick()的实现。然而在里面 onItemClick()我需要通过异步库调用执行检查。基本上在onItemClick()内调用XYZ.checkConnection(booleanCallback);是异步的。 然后在booleanCallback(int status)中我可以检查状态。我可以用什么样的模式来处理这种情况?

1 个答案:

答案 0 :(得分:0)

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
}
}

如果你想要一个模块化的类

,你可以使用委托方法

我基本上给了你一个起点,这可以根据你想要的东西进行调整。我没有完全得到你的背景。因此广义的回答