A라는 리스트 엑티비티가있고 B라는 DB클레스가 있습니다
A라는 리스트로 DB클레스에서 Arraylist로 데이터를 받은후
그 데이터로 twitlistadapter 로 연결시켜준뒤
setListAdapter(mTa); 으로 연결하여서 리스트를 출력시켰습니다
db에 새로운 내용이 들어오면 아까 연결시킨 Arraylist 변수에 다시 데이터를 받아서
mTa.notifyDataSetChanged();
이런식으로 호출하면 프로그램이 죽습니다
public class timeline extends ListActivity {
TwitListAdapter mTa = null;
private static ArrayList<ListViewLayoutData> Arrlist = new ArrayList<ListViewLayoutData>();
private static final int MSG_HANDLE = 0;
private HtwitterDB DB;
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
mTa.notifyDataSetChanged(); //이부분에서 자꾸죽습니다
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timeline);
Arrlist = new ArrayList<ListViewLayoutData>();
((Htwittered) getApplication()).setCreateDatabase(timeline.this);
updata();
mTa = new TwitListAdapter(timeline.this,
R.layout.timeline_item, Arrlist);
setListAdapter(mTa);
}
public void updata(){
Arrlist = ((Htwittered) getApplication()).setAccessDatabase();
}
public void onResume(){
super.onResume();
Log.e("ejrwo","1");
updata();
Log.e("ejrwo","2");
Message message = handler.obtainMessage();
message.what = MSG_HANDLE;
handler.sendMessage(message);
} }
Arrlist = ((Htwittered) getApplication()).setAccessDatabase();
}
이함수에서 db의 내용을 글거오는데 메인문에서 연결할때다도 updata를 호출하였고
다시 업데이트할때도 updata를 호출하여도 똑같은 변수에 데이터를 넣었는데
ㅠ
제가 mTa랑 연결된 리스트 크기를 계속 출력시키는데
리스트 크기는 똑같이 로그에 찍히는데
mTa null이 된다는것은 mTa와 연결한 리스트 변수연결이 끊어진다는 뜻인가요 ?
핸들러에
if(mTa!=null){
mTa.notifyDataSetChanged();
}
같이 선언하였는데 다른 로그켓이뜨는데 수정하여서 첨부파일 바꿨어요
수고스러워도 한번만 더 봐주시면감사해요
public ArrayList<ListViewLayoutData> loadSavedTwitListFromDb() {
SQLiteDatabase db = null;
ArrayList<ListViewLayoutData> mArrlstLvld;
if (db == null) {
db = main.openOrCreateDatabase("twitter.db",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
}
Cursor c = db.query("twitter", new String[] { "id", "friend_name",
"screen_name", "twit_body", "twit_image_url" }, null,
null, null, null, "id DESC");
mArrlstLvld = new ArrayList<ListViewLayoutData>();
c.moveToFirst();
for (int i = 0; i < c.getCount(); i++) {
ListViewLayoutData lvld = new ListViewLayoutData(c.getLong(c
.getColumnIndex("id")), c.getString(c
.getColumnIndex("friend_name")), c.getString(c
.getColumnIndex("screen_name")), c.getString(c
.getColumnIndex("twit_body")), c.getString(c
.getColumnIndex("twit_image_url")));
mArrlstLvld.add(lvld);
c.moveToNext();
}
c.close();
db.close();
return mArrlstLvld;
}
이런식으로 호출합니다 ㅠㅠ



