액티비티에서
서버와 http 통신을 하는 asynctask 를 하나 만들고 asynctask 에 callback 인터페이스를작성합니다
이 callback 인터페이스는 onPostExecute 에서 호출해주며
액티비티는 asynctask의 콜백 인터페이스를 상속받아서 구현합니다
즉 http 통신 asynctast에 있는 인터페이스를 액티비티에서 상속받아 원하는 동작을
http통신이 끝난뒤 할 수 있는 형태입니다
http통신결과에 따라 현재 액티비티에 있는 listview를 갱신하는 프로그램을 짜고있는데
onCreate 에서 는
adapter.addItemTop();
// 첫 번째 아이템 추가
adapter.addItemDevice(ContextCompat.getDrawable(this, R.drawable.ref_on),
"",
ContextCompat.getDrawable(this, R.drawable.button_power_on2)); ;
// 두 번째 아이템 추가.
adapter.addItemDevice(ContextCompat.getDrawable(this, R.drawable.com_on),
"",
ContextCompat.getDrawable(this, R.drawable.button_power_on2)) ;
// 세 번째 아이템 추가.
adapter.addItemDevice(ContextCompat.getDrawable(this, R.drawable.len_on),
"",
ContextCompat.getDrawable(this, R.drawable.button_power_on2)) ;
adapter.addItemDevice(ContextCompat.getDrawable(this, R.drawable.tv_on),
"",
ContextCompat.getDrawable(this, R.drawable.button_power_on2)) ;
adapter.addItemDevice(ContextCompat.getDrawable(this, R.drawable.ref_on),
"",
ContextCompat.getDrawable(this, R.drawable.button_power_on2)) ;
adapter.addItemBattom();
ListViewItem ss = adapter.getListViewItemList().get(index+1);
ss.setOnoff(ContextCompat.getDrawable(this, R.drawable.button_power_off));
마지막 두줄 코드로 listview의 아이템 갱신이 가능했는데
(리스트뷰에는Top과 device, battom 3종류 view가 있습니다, top과 battom 사이 4개의 device view를 넣어두고 마지막에 두줄로 view가 표시하는 img를 바꾸는 테스트를 했습니다.)
아래 콜백에서는 코드는 동작하지만 실질적으로 listview 갱신이 돼지 않습니다.
방법이 없을까요?
public class MainActivity extends AppCompatActivity implements PlugListViewAdapter.PlugListBtnClickListener, APIcall.callback{
JSONObject jsonObject=null;
TextView resultTextview=null;
JSONArray device_list=null;
PlugListViewAdapter adapter
....
@Override
public void onTaskDone(String ... params) { //인터페이스에서 상속받은 객체 onPostExcute 가 호출함
//Toast.makeText(this,"Http call Done : \n"+resultTextview.getText().toString(), Toast.LENGTH_SHORT).show();
ListViewItem ss = adapter.getListViewItemList().get(actionindex);
ss.setOnoff(ContextCompat.getDrawable(this, R.drawable.button_power_off)); adapter.notifyDataSetChanged();
}