ListViewの更新に問題があります。ListActivityを呼び出す別のTabActivity(SubTabActivity)を呼び出すTabActivityがあります。私のListViewは、WebサーバーのXMLファイルからデータを取得します。カスタマイズされたヘッダーには、ListViewをリロード/更新するためのボタンがあります。subTabを変更するときは、onTabChanged-Methodを呼び出して、他のデータでリストを再描画します。
私の問題は、最初のタブ変更を行う前にのみListViewを更新できることです。タップを変更した後、更新できるのは2番目のリストのみです。最初のリストに戻ると、両方を更新できません。XMLファイルからのみ新しいデータを取得できますが、表示できません。invalidate()、invalidateViews()、notifyDataSetChanged()を試しましたが、このバグを修正することはできませんでした。
更新するAsyncTask
private static class ReloadNews extends AsyncTask<Void, Void, Void>
{
@Override
protected void onPreExecute()
{
MenuActivity.startProgress();
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
News.getNews(News.url);
myref.runOnUiThread(new Runnable()
{
@Override
public void run()
{
// TODO Auto-generated method stub
if(SubTabMenuActivity.subMenuTabHost.getCurrentTabTag().equals("FestivalNews"))
{
adapter = new NewsAdapter(myref, News.getFestivalNews());
newsList.setAdapter(adapter);
}
else if(SubTabMenuActivity.subMenuTabHost.getCurrentTabTag().equals("RennNews"))
{
adapter = new NewsAdapter(myref, News.getRegattaNews());
newsList.setAdapter(adapter);
}
}
});
return null;
}
@Override
protected void onPostExecute(Void result)
{
MenuActivity.stopProgress();
}
}
TabChangeの後で機能しない理由はありますか?
編集:
10-25 05:58:28.264: D/dalvikvm(272): GC_EXPLICIT freed 8K, 51% free 2725K/5511K, external 410K/517K, paused 241ms
10-25 05:58:33.104: D/dalvikvm(310): GC_EXPLICIT freed 236K, 45% free 3366K/6087K, external 410K/517K, paused 53ms
10-25 05:58:35.281: D/SntpClient(60): request time failed: java.net.SocketException: Address family not supported by protocol
10-25 05:58:38.163: D/dalvikvm(345): GC_EXPLICIT freed 106K, 44% free 3521K/6215K, external 410K/517K, paused 79ms
10-25 05:58:43.153: D/dalvikvm(360): GC_EXPLICIT freed 325K, 51% free 2720K/5511K, external 410K/517K, paused 54ms
10-25 05:58:57.233: I/System.out(433): ADaPter
10-25 05:58:57.243: I/System.out(433): ADaPter
10-25 05:58:57.263: I/System.out(433): ADaPter
10-25 05:58:57.273: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.273: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.293: I/System.out(433): ADaPter
10-25 05:58:57.303: I/System.out(433): ADaPter
10-25 05:58:57.313: I/System.out(433): ADaPter
10-25 05:58:57.323: I/System.out(433): ADaPter
10-25 05:58:57.333: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.333: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.433: I/System.out(433): ADaPter
10-25 05:58:57.453: I/System.out(433): ADaPter
10-25 05:58:57.483: I/System.out(433): ADaPter
10-25 05:58:57.493: D/dalvikvm(433): GC_CONCURRENT freed 1274K, 62% free 3322K/8647K, external 2400K/2689K, paused 4ms+5ms
10-25 05:58:57.523: I/System.out(433): ADaPter
10-25 05:58:57.533: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.533: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.553: I/System.out(433): ADaPter
10-25 05:58:57.563: I/System.out(433): ADaPter
10-25 05:58:57.573: I/System.out(433): ADaPter
10-25 05:58:57.593: I/System.out(433): ADaPter
10-25 05:58:57.593: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.603: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.623: I/System.out(433): ADaPter
10-25 05:58:57.633: I/System.out(433): ADaPter
10-25 05:58:57.643: I/System.out(433): ADaPter
10-25 05:58:57.653: I/System.out(433): ADaPter
10-25 05:58:57.663: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.663: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.693: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.693: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.693: I/System.out(433): ADaPter
10-25 05:58:57.713: I/System.out(433): ADaPter
10-25 05:58:57.723: I/System.out(433): ADaPter
10-25 05:58:57.733: I/System.out(433): ADaPter
10-25 05:58:57.743: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.743: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.793: I/System.out(433): ADaPter
10-25 05:58:57.803: I/System.out(433): ADaPter
10-25 05:58:57.813: I/System.out(433): ADaPter
10-25 05:58:57.813: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.813: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.933: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.933: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:57.943: I/System.out(433): ADaPter
10-25 05:58:58.003: D/dalvikvm(433): GC_CONCURRENT freed 890K, 61% free 3439K/8647K, external 2240K/2689K, paused 8ms+4ms
10-25 05:58:58.003: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.003: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.013: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.013: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.023: I/System.out(433): ADaPter
10-25 05:58:58.073: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.073: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.083: I/System.out(433): ADaPter
10-25 05:58:58.083: I/System.out(433): ADaPter
10-25 05:58:58.103: I/System.out(433): ADaPter
10-25 05:58:58.113: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.113: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.123: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.123: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.143: I/System.out(433): ADaPter
10-25 05:58:58.433: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.453: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.453: D/skia(433): --- SkImageDecoder::Factory returned null
10-25 05:58:58.453: D/skia(433): --- SkImageDecoder::Factory returned null
これは、リストを埋めている間、およびタブ変更の前に更新を呼び出したときのLogCatの通常の状態です。
次のlogcatの部分は、tabchangeを実行し、refreshを再度呼び出した後です。
10-25 05:59:01.493: D/dalvikvm(433): GC_FOR_MALLOC freed 293K, 58% free 3686K/8647K, external 2240K/2689K, paused 30ms
10-25 05:59:01.493: I/dalvikvm-heap(433): Grow heap (frag case) to 8.655MB for 524304-byte allocation
10-25 05:59:01.523: D/dalvikvm(433): GC_FOR_MALLOC freed 256K, 58% free 3942K/9223K, external 2240K/2689K, paused 31ms
10-25 05:59:01.923: D/dalvikvm(433): GC_FOR_MALLOC freed 532K, 56% free 4094K/9223K, external 2240K/2689K, paused 27ms
10-25 05:59:02.313: D/dalvikvm(433): GC_CONCURRENT freed 862K, 54% free 4319K/9223K, external 2240K/2689K, paused 5ms+6ms
10-25 05:59:02.943: D/dalvikvm(433): GC_CONCURRENT freed 989K, 51% free 4609K/9223K, external 2240K/2689K, paused 7ms+3ms
10-25 05:59:03.473: D/dalvikvm(433): GC_CONCURRENT freed 1478K, 52% free 4447K/9223K, external 2240K/2689K, paused 7ms+7ms
10-25 05:59:03.783: W/InputManagerService(60): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4073bca0
アダプタがデータをリストにロードしないことに気づきました。adapter.count();を呼び出すと 彼はすでに新しいデータを取得していることがわかりますが、リストにはもう描画されていません。
別のlogTagを追加した後、アダプタのコンストラクタが呼び出されているが、getViewメソッドは呼び出されていないことに気付きました。ListViewがアダプタからフォーカスを失う可能性はありますか?