2012-08-13 3 views
1

ListView은 새로 고침되지 않지만 어댑터가 다시 설정되면 새로 고침됩니다.<code>notifyDataSetChanged();</code>이 호출 될 때 ListView가 notifyDataSetChanged에서 새로 고침되지 않음

내 활동 내에서 onCreateListView과 어댑터를 초기화합니다. 그런 다음 매초마다 새 값을 확인하는 Hanler이 있습니다. listview.setAdapter(arrayAdapter);이 작동하지만 arrayAdapter.notifyDataSetChanged();은 아무 것도하지 않습니다. 나는 그것을 할 수있는 올바른 방법이라고 읽고, 어쨌든도 setAdapter 경우 작동 않기 때문에, 그래서

public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

        lv = (ListView) findViewById(R.id.listView1); 

      arrayAdapter = new ArrayAdapter<Integer>(this,android.R.layout. simple_list_item_1, myIntegers); 
      lv.setAdapter(arrayAdapter); 
    } 

    private Handler handler = new Handler() { 

      @Override 
      public void handleMessage(Message msg) { 
       if (msg.what == DIS){ 
        handler.sendEmptyMessageDelayed(DIS, 1000); 
        if(!refresh()){ 
         handler.removeMessages(DIS); 
        } 
       } 
      } 
     }; 

    public boolean refresh(){ 

     if(ports.isEmpty()){ 
      return false; 
     }else{ 
      listview.setAdapter(arrayAdapter); //WORKS 
    arrayAdapter.notifyDataSetChanged(); // DOESN'T WORK 
      return true; 
      } 
    } 

내가 notifyDataSetChanged으로 그 일을하는 방법 궁금 : 여기

코드입니다 내 목록보기를 새로 고칠 때마다 처음으로 이동합니다.

편집 :

명확히하는 것, 나는 myIntegers에 더 많은 값을 추가하고있다.

+0

기존 어댑터를 수정 한 코드를 볼 수 있습니까? 해당 메서드를 호출하여 어댑터를 변경하고 있습니까? 또는 myIntegers 데이터 세트를 수정하고 있습니까? – Joel

+0

myIntegers에 더 많은 값을 추가하는 중 –

+0

대신 adapter.add() 메소드를 사용하여 값을 추가하십시오. 그 어댑터를 만드는 데 사용 된 배열을 수정 한 다음 뷰를 업데이트 할 업데이트 된 인스턴스를 보유 할 것으로 기대한다고 생각하지 않습니다. – Joel

답변

5

대신 adapter.add() 메서드를 사용하여 값을 추가하십시오. 그 어댑터를 만드는 데 사용 된 배열을 수정 한 다음 뷰를 업데이트 할 업데이트 된 인스턴스를 보유 할 것으로 기대한다고 생각하지 않습니다. 행운을 빌어 요!

+0

'adapter.clear()'는 뷰가 리프레쉬되어야 함을 어댑터가 인식하도록 강제하지 않지만,'adapter.add()'또는'adapter.addAll()'은 아파하도록합니다. 답변을 주셔서 감사합니다! – w3bshark

관련 문제