转载自http://blog.sina.com.cn/s/blog_6c762bb301018off.html
在ListView中设置Selector为null会报空指针?
mListView.setSelector(null);//空指针
试试下面这种:
mListView.setSelector(newColorDrawable(Color.TRANSPARENT));
如何让ListView初始化的时候就选中一项?
ListView需要在初始化好数据后,其中一项需要呈选中状态。所谓"选中状态"就是该项底色与其它项不同,setSelection(position)只能定位到某个item,但是无法改变底色呈高亮。setSelection(position)只能让某个item显示在可见Item的最上面(如果Item超过一屏的话)!就是所谓的firstVisibleItem啦!
如果想要实现效果可以在listview所绑定的adapter里的getView函数里去完成一些具体的工作。可以记下你要高亮的那个item的index,在getView函数里判断index(也就是position),如果满足条件则加载不同的背景。
ListView的右边滚动滑块启用方法?
很多开发者不知道ListView列表控件的快速滚动滑块是如何启用的,其实辅助滚动滑块只需要一行代码就可以搞定,如果你使用XML布局只需要在ListView节点中加入 android:fastScrollEnabled="true"这个属性即可,而对于Java代码可以通过myListView.setFastScrollEnabled(true);来控制启用,参数false为隐藏。
还有一点就是当你的滚动内容较小,不到当前ListView的3个屏幕高度时则不会出现这个快速滚动滑块,该方法是AbsListView的基础方法,可以在ListView或GridView等子类中使用快速滚动辅助。
1.更新ListView中的數據,通過調用BaseAdapter對象的notifyDataSetChanged()方法:
mAdapter.notifyDataSetChanged();
2.每個listview都有無效的位置,如第一行的前一行,最後一行的後一行,這個無效的位置是一個常量.
ListView.INVALID_POSITION
3.有時我們需要在程序中通過點擊按鈕來控制ListView行的選中,這就用到了在程序中如何使用代碼來選擇ListView項.
mListView.requestFocusFromTouch();
mListView.setSelection(intindex);
第一條語句並不是必須的,但是若你ListView項中含有Button,RadioButton,CheckBox等比ListView取得焦點優先級高的控件時,那麼第一條語句是你必須加的.
4. 同樣的,若你ListView項中含有Button,RadioButton,CheckBox等比ListView取得焦點優先級高的控件時,ListView的setOnItemClickListener是不被執行的,這時你需要在你的xml文件中對這些控件添加 android:focusable="false"注意這條語句要放在xml文件中修改,在代碼中使用是無效的.
5. 如何保持ListView的滾動條一直顯示,不隱藏呢: xml文件中做如下修改 android:fadeScrollbars="false"
6.ListView本身有自己的按鍵事件,即你不需要設置方向鍵的標識,按下方向鍵ListView就會有默認的動作,那如何進行控制,編寫自己的onKey呢,你需要在Activity中重寫dispatchKeyEvent(KeyEventevent);方法,在這裡面定義你自己的動作就可以了
ListView 自定义滚动条样式:
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:stackFromBottom="true"//从下开始显示条目
android:transcriptMode="normal"
android:fastScrollEnabled="true"
android:focusable="true"
android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track"
android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb"
/>
//scrollbar_vertical_track,crollbar_vertical_thumb自定义的xml文件,放在Drawable中,track是指长条,thumb是指短条
去掉ListView Selector选种时黄色底纹一闪的效果:
//listview.setSelector(R.drawable.thisShape);
publicbooleanisEnabled(intposition){
// TODOAuto-generated method stub
returnfalse;
}
如何在使用gallery在flinging拖动时候不出现选择的情况?
这时候需要注意使用
gallery.setCallbackDuringFling(false)
如何让ListView自动滚动?
注意stackFromBottom以及transcriptMode这两个属性。类似Market客户端的低端不断滚动。
<ListView android:id="listCWJ"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
/>
ListViewlistView= (ListView)findViewById(R.id.配置文件中ListView的ID);
//全选遍历ListView的选项,每个选项就相当于布局配置文件中的RelativeLayout
for(inti= 0; i < listView.getChildCount();i++){
Viewview= listView.getChildAt(i);
CheckBoxcb= (CheckBox)view.findViewById(R.id.CheckBoxID);
cb.setChecked(true);
}
privatevoidupdateView(intitemIndex){
intvisiblePosition=yourListView.getFirstVisiblePosition();
View v= yourListView.getChildAt(itemIndex- visiblePosition);//Do somethingfancy with your listitem view
TextView tv= (TextView)v.findViewById(R.id.sometextview);
tv.setText("Hi! I updated you manually");
}
publicbooleanonItemLongClick(AdapterView>parent,View view,
intposition,longid){
if(id==1){
returntrue;
}
returnfalse;
}