在Volley Android库中的网络请求之后更新UI线程

Adn*_*lla 11 rest android android-volley

我决定尝试一下Volley,所以目前我有很多REST标注要做,所以我通常会创建一个RequestHandler和一个ResponseHandler类,它们的名字分别建议处理请求和响应.我遵循这种模式,所以我不写冗余代码.我只是将动态查询/ url作为参数传递,并使用switch case处理对每个请求的响应.但我坚持以下问题:

我无法从我调用RequestHandler类的地方更新我的UI线程.到目前为止我尝试或已经知道的事情:

  1. 使UI元素(Textview,Listview)保持静态,并在响应到来后更新它们.
  2. 传入上下文参数并在收到响应后更新UI.
  3. 将请求和响应写为Activity中的内部类
  4. 摆脱排球.

我在想,你们是怎么做到的?有没有比我遵循的请求/响应处理程序模式更好的模式?有没有更新UI线程遵循相同模式的方法?

提前致谢 !

GLe*_*Lee 3

我使用截击,这就是我所做的。该代码可以放置在您的活动中的任何位置。

import com.android.volley.Response.Listener;
import static com.android.volley.Response.ErrorListener;

Listener<YOURDATACLASS> successListener = new Listener<YOURDATACLASS>() {
    @Override
    public void onResponse(YOURDATACLASS data) {
        // Check to make sure that the activity hasn't been destroyed while the call was in flight.
        if (! isFinishing()) {
            //DO YOUR UI UPDATE, such as 
            TextView textview = (TextView) findViewById(R.id.yourtextview);
            textview.setText("blah blah blah");
        }
    }
};
ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            //DO SOMETHING ON FAILURE
        }

YOURAPICALL(successListener, failurelistener);
Run Code Online (Sandbox Code Playgroud)