2011-04-18 2 views
0

Android에서 목록을 새로 고치고 있지만 제대로 표시되지 않는 것 같습니다.Android리스트 새로 고침

나는 notifyDataSetChanged()를 사용했습니다. 적용 할 수 있다고 생각하는 모든 시점에서 (현재 대화 상자를 사용하여 입력) 작동하지만 작동하지 않으며 모든 곳에서 석고를 칠할 시점에 도달했습니다.

당신이보고있는 동안 목록을 새로 고쳐야한다고 말하는 것이 맞습니까? 아니면 목록을 다시 작성하고 여전히보기를 새로 고쳐야합니까?

누군가가 목록을 작성하는 것과 관련하여 그 위치에 대한 제안이 있으면 기쁜 마음으로 듣겠습니다.

+0

코드, 제발 ... – Wroclai

+0

어댑터 자체 또는 어댑터를 만드는 데 사용한 일부 어레이를 변경하고 있습니까? – Aleadam

답변

1

ListActivity입니까? 나는 현재 프로젝트에서 ListActivity를 가지고 있으며, ArrayAdapter를 확장 한 내 자신의 어댑터 클래스가 있습니다.

내 경험에 따르면 내 확장 목록 어댑터 클래스 인스턴스에서 notifyDataSetChanged()를 호출하면 즉시 목록보기가 새로 고쳐집니다. 따라서 어댑터 인스턴스에서 .notifyDataSetChanged()를 호출하면 목록보기가 다시 생성되어 어댑터의 getView() 구현을 호출하여 각 개별 행 뷰를 다시 생성합니다. 따라서 사용자는 데이터를 변경 한 다음 .notifyDataSetChanged()를 호출하는 컨텍스트 메뉴 항목을 선택하면 화면이 즉시 새 데이터로 새로 고쳐집니다.

그래서 분명히 몇 가지 코드 조각을 추가합니다 :

을 내가 ArrayAdapter와

class VarAdapter extends ArrayAdapter{ 

... 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 

     // Creates the views based upon myData 

    ... 

    @Override 
    public int getCount(){ 

    ... 

확장하는 ListActivity 그것은 내

public class VarListActivity extends ListActivity { 

이 그리고 내가 그 배열의 인스턴스를 생성 어댑터

la = new VarAdapter(this, R.layout.row0); 

그리고 상황에 맞는 메뉴 항목이

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.a_context_menu_option: 

      // Does a call to perform modifications to myData 

      la.notifyDataSetChanged(); 
     return true; 

을 선택했을 때 난 그냥 모두 아래로 귀하의 상황에 대한 유사성 그냥 경우에이 척 해요,하지만 정말 우리가 코드에 대해 조금 더 알 필요가있다.

관련 문제