나는 AsyncTask
을 사용하고 twitter 피드를 비동기 적으로 가져 와서 listView에 표시합니다. 그것은 잘 작동합니다 그럼 목록보기를 새로 고치려면 Runnable
의 Run()
에 asyncTask 호출을 넣어 특정 간격 후에로드합니다. 특정 시간 간격 후에 피드가로드되지만 목록보기가 업데이트되지 않습니다. asyncTask 내부에서 notifyDataSetChanged()
을 사용하지만 작동하지 않습니다. AsyncTask에서 ListView를 새로 고치는 방법은 무엇입니까?
이
내 노력 코드 : 귀하의에서 onCreate 방법에 된 setContentView 후list = (ListView) findViewById(R.id.list);
:
public class Twitter7FeedActivity extends Activity {
LazyAdapter adapter;
ListView list;
JSONObject jsonObj = null;
JSONArray jsonArray = null;
@SuppressLint("SimpleDateFormat")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_twitter7_feed);
callAsynchronousTask();
}
public void callAsynchronousTask() {
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
new GetFeedTask().execute(CommonUtils.BEARER_TOKEN,
CommonUtils.URL);
} catch (Exception e) {
}
}
});
}
};
timer.schedule(doAsynchronousTask, 0, 50000);
}
protected class GetFeedTask extends AsyncTask<String, Void, String> {
private ProgressDialog dialog = new ProgressDialog(
Twitter7FeedActivity.this);
protected void onPreExecute() {
this.dialog.setMessage("Please wait");
this.dialog.show();
}
@Override
protected String doInBackground(String... params) {
// related code
}
@Override
protected void onPostExecute(String jsonText) {
// related code
adapter = new LazyAdapter(Twitter7FeedActivity.this,
// tweets);
list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
}
알림 어댑터 사용 – KOTIOS
그는 이미이 어댑터를 사용하고 있습니다. adapter.notifyDataSetChanged(); –
이 솔루션을 사용해 보시겠습니까? http://stackoverflow.com/questions/15472539/refresh-spinner-view-after-execute-asynchronous-task-in-another-class – tsohtan