Android下ListViewの奇異異常大集合(更新継続)
2768 ワード
ps:android 2.3ではよくこのような問題が発生します
Caused by: java.lang.NullPointerException
at android.widget.ListView.clearRecycledState(ListView.java:522)
at android.widget.ListView.resetList(ListView.java:508)
at android.widget.ListView.setAdapter(ListView.java:440)
at com.company.myapp.MyActivity.refreshList(MyActivity.java:85)
at com.company.myapp.MyActivity.onCreate(MyActivity.java:37)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
... 11 mored
このような状況が発生すると、eclipseで得られた異常はlistViewにあります.setAdapter(adapter);この言葉の中で、listViewもadapterも空の値がないのをどう思いますか.悩んでいるときは、追加されたFooterViewやHeaderViewがnullなのか、空の話なので考えなければなりません..ListViewは高さを測ることができません..そしてレイアウトできません.最後に間違えました...またaddFooterViewとaddHeaderViewの2つの方法はlistViewに置かなければならない.setAdapter(adapter)の前に、そうしないと、あなたが望んでいるFooterViewやHeaderViewは現れません.
mLoadingLayout = (FrameLayout) View.inflate(this, R.layout.load, null); listView.addFooterView(mLoadingLayout); listView.requestFocus();
これはlistviewの末尾に進捗バーを追加します.
listView.removeFooterView(mLoadingLayout);
これは、末尾を除去する進捗バーです.
削除時に空のポインタが返される場合がありますが、listviewはnullではなく、mLoadingLayoutもnullではありませんが、listviewが3つの部分に分かれているため、空のポインタが返されます.一つは頭部、二つは中間部、三つは尾部です.頭部または尾部が設けられている場合は、本当の意味で有効になるには中間部が必要です.有効でない場合は削除するとポインタエラーが表示されます.
だからlistViewでremoveFooterView(mLoadingLayout)の場合
リストビューを呼び出す必要があります.setAdapter(adapter);(中間部を設ける)
adapterは、データは0でもnullでも構いません.
<!--
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
-->