Android下ListViewの奇異異常大集合(更新継続)

2768 ワード

  • ListViewのaddFooterViewまたはaddHeaderViewを使用してエラーまたは知られていない例外を報告します:at android.widget.ListView.clearRecycledState(ListView.java:522)

  • 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は現れません.
     
  • 私たちは通常、データをロードするときに、トラフィックを節約するために一度にデータをすべてダウンロードすることはありません.一般的には、セグメントダウンロードです.セグメントダウンロードでは、listviewの一番後ろに進捗バーが配置され、データがロードされていることを示します.データがロードされたら、またクリアします.この時は気をつけなければなりません.

  • 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; }
    -->