如何更新凌空响应侦听器内的UI?需要runOnUiThread吗?或者Onresponse是否将控件单独转移到UI线程?

时间:2016-05-12 18:59:57

标签: android android-volley android-runonuithread

使用volley库时,如果我想更新Response侦听器中的listview适配器,是否应该使用runOnUiThread完成?或者它已经在UiThread中了?

2 个答案:

答案 0 :(得分:0)

当适配器尝试修改视图对象时,您可能会收到以下异常:

  

android.view.ViewRoot $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图。

所以,为了安全起见,请执行以下操作:

geyActivity().runOnUiThread(new Runnable() {

        @Override
        public void run() {
            adapter.notifyDataSetChanged();
        }
    });

答案 1 :(得分:0)

来自凌空响应的呼叫处理程序

@Override
public void onResponse(String response) {
     Log.d("Response is: ", response);
     rui = response; // i put response to public String variable rui
     myHandler.post(updateRunnable);
     parseJSON(response);
}

和onCreate Activity

myHandler = new Handler();

updateRunnable = new Runnable() {
    public void run() {
       //call the activity method that updates the UI
       updateUI();
    }
};

以及您对updateUI的更新

public void updateUI(){
    t.setText(rui);
}

并确保您的小部件ID确实存在。

<TextView
    android:id="@+id/konten"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"