마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

각기 다른 custom adapter의 갱신..

0 추천
안녕하세요. 현재 메인 액티비티와 어뎁터, 서브어뎁터 총 3개의 클래스가 있습니다.

각 어댑터에는 버튼이 있고 버튼 클릭시 자신과 서브 어댑터가 실시간으로 변경되고자 합니다..

메인 액티비티에서 두 개의 어뎁터를 정의해주고

1. MainActivity

private void connectAdapter(){

  adapter = new WorkRequestMntnceInfoListViewAdapter(getApplicationContext());
  userList = (ListView) findViewById(R.id.user_mntnceinfo_list);
  userList.setAdapter(adapter);

----중략----

   adapter.notifyDataSetChanged();

}

private void connectSubAdapter(){

  subAdapter = new WorkRequestMntnceInfoSubListViewAdapter(getApplicationContext());
  userSubList = (ListView) findViewById(R.id.user_mntnceinfo_sublist);
  userSubList.setAdapter(subAdapter);

----중략----

   adsubAdapter.apter.notifyDataSetChanged();

}

2. Adapter

---중략(데이터 최종 업데이트 후)---

  //this.notifyDataSetChanged(); // Adapter
  //subUser.notifyDataSetChanged(); // null error(SubAdapter)

3. subAdapter

---중략(데이터 최종 업데이트 후)---

  //this.notifyDataSetChanged(); // SubAdapter
  //subUser.notifyDataSetChanged(); // null error(Adapter)

위와 같이 각 어댑터에 다른 어댑터 호출 시 에러가 발생하고..

메인액티비티에서 호출하면 에러는 없으나, 갱신이 되질 않습니다.

어떻게 해야 될까요?

감사합니다.
동그랑때앵 (320 포인트) 님이 2016년 8월 10일 질문

1개의 답변

0 추천
UI 변경할때에는 되도록이면 부모가 되는 Activity에  Handler를 정의하여 변경을 요구하는곳에서는 Message만 보내고 실질적으로 변경하는곳은 Handler가 하도록 하거나

Activity 함수인 runOnUiThread를 이용하시기 바랍니다.

에러 메세지를 올려주시지 않아서 추측하건데 위와 관련된 오류일것으로 판단됩니다.

정확한 답변 원하시면 에러메세지도 같이 올려주세요.
Development Guy (70,570 포인트) 님이 2016년 8월 10일 답변
답변 감사드립니다..

어뎁터에서
 ((Activity) MainActivity).runOnUiThread(new Runnable() {
     public void run() {      
        MainActivity.getAdapter(); // 에러 발생        
     }
 });
선언해주고 MainActivity에 getAdapter 메소드 만들어서 받아와 핸들러 통해
변경하고자 하니 아래와 같은 에러가 발생됩니다..

방식이 틀린건가요?..

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.post(java.lang.Runnable)' on a null object reference
...