2013-03-21 2 views
0

AsyncTask를 사용하여 내 listView를 채우기 위해 데이터를 가져오고 있습니다. 그때 나는 새로운 전망을 일부 변경을 만들고 싶어하지만 ListView에이 onPostExecute()에서 프로그램 복귀 후 새보기로 채워집니다 onPostExecute()onPostExecute()에서보기를 다시 그리는 방법

protected void onPostExecute(ArrayList<JSONObject> result) { 

    MarkersListAdapter adapter = (MarkersListAdapter) this.markersList.getAdapter(); 

    adapter.clear(); 
    adapter.addAll(result); 

    this.markersList.setAdapter(adapter); 

에서 목록보기 위해 어댑터를 변경하고 있습니다. onPostExecute()에있을 때 안드로이드가 내 목록보기를 채우도록 강요하고 싶습니다. 나는 어댑터의 경우 notifyDatasetChanged()을 시도했으며 listview의 경우 invalidate()을 시도했지만 아무 것도 작동하지 않았습니다.

+0

어떤 종류의 변화가 있습니까? 왜 시도했는지 게시하지 마십시오 .. – ngesh

+0

다른 데이터에 따라 항목 그래픽이 변경되었습니다. 나는이 코드가 사건과 관련이 있다고 생각하지 않는다. 나는'getChildAt (i)'를 사용하여 뷰를 검색한다. – ejar

답변

0

나는 목록을 수정하고 listView를 무효화 할 수있었습니다.

먼저 listView에 어댑터를 설정하십시오.

listView.setAdapter(new MyListAdapter(getActivity(), R.layout.list_cell_layout, objList)); 

이 같은 목록보기에 무효화 목록을 새로 고치 단지 objList을 변경하고 호출해야 할 때마다 :

objList.remove(1); 
listView.invalidateViews(); 

그것은 나를 위해 일했습니다.

+0

글쎄, 실제로 그것은 나를 위해 작동하지 않습니다. 아무 반응이 없습니다. 'getChildAt (i)'는 null를 돌려줍니다. 'onPostExecute()'가 끝나고 몇개의 디버거 단계 만 거치면 화면에 나타납니다. – ejar

+0

ListAdapter를 만들 때 null이 아닌 목록을 추가 했습니까? –

+0

Nope. 나는 그것을 다음과 같이 초기화한다 : ArrayList result = new ArrayList (); MarkersListAdapter adapter = 새 MarkersListAdapter (getActivity(), R.layout.cito_select_markers_row, result); markersList.setAdapter (adapter); ' – ejar

관련 문제