Android ListView默認選中某一項

很多時候,在listview加載數據之後,我們希望默認選中第一項,然後我們在setAdapter之後寫上如下代碼:

listview.getChildAt(0).setBackgroundResource(R.color.white);
發現程序崩潰:NullPointerException,事實上,setAdapter() 是異步的 ,調用了這個方法之後 ListView 的 item 並沒有立馬創建,而是在下一輪消息處理時才創建。

解決辦法:使用 post() 提交一個 Runnable() 對象,在 Runnable() 內部來做默認選中這種初始化動作

<span style="font-size:18px;"> //默認選擇第一項
        listListview.post(new Runnable() {
            @Override
            public void run() {
                listListview.getChildAt(0).setBackgroundResource(R.color.white);
            }
        });</span>

假如listView對點擊事件不響應,我們可以通過對ItemLayout的根控件設置其android:descendantFocusability=”blocksDescendant”即可,這樣ItemLayout就屏蔽了所有子控件獲取Focus的權限,不需要針對ItemLayout中的每一個控件重新設置focusable屬性了,如此就可以順利的響應onItemClickListener中的onItenClick()方法了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章