2

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

4

2 回答 2

1

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

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

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

geyActivity().runOnUiThread(new Runnable() {

        @Override
        public void run() {
            adapter.notifyDataSetChanged();
        }
    });
于 2016-05-12T19:50:59.233 回答
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"
于 2017-12-02T12:59:02.250 回答