view-ListView学习
LiastView网上有很多,推荐如下:
1、android ListView详解:
http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html
2、Android中ListView的性能问题
http://android.tgbus.com/Android/tutorial/201105/354459.shtml
3、设置背景色为透明,防止滑动时,背景变黑
android:cacheColorHint="#00000000"
4、设置ListView控件条目被按下时背景颜色在文字背后,设置成True时背景色会覆盖文字
android:drawSelectorOnTop="false"
5、android:divider属性:本属性设置listView中的选项分隔符,可设置图片,颜色等。
android:divider="#00000000" 设置为无色,这样显示时,就没有分隔线了。
6、android:minHeight="?android:attr/listPreferredItemHeight" 设置最小高度由item决定
7、Listview更新:
在BaseAdapter的getView()方法中根据条件改变View的字体颜色、其中的图片等,是不能立即在UI上显示的,必须调用notifyDataSetChanged()方法,实现更新。
ListView不能局部更新(现在为止我没找到实现局部更新的方法,如有同学有方法实现局部更新,盼赐教。),更新实现如下:
BaseAdapter adapter =new BaseAdapter();
adapter.notifyDataSetChanged();
8、更改ListView中选中框的TextView的字体颜色:
要改变TextView的颜色,需调用TextView的setTextColor()方法设置,在使用中发现,在BaseAdapter中的getView()中使用“name.setTextColor(R.color.background);”方式字体会是黑色,可用”name.setTextColor(Color.rgb(0, 234, 255));“方式改变字体颜色,“Color.rgb(0, 234, 255)”为要设置的颜色的RGB值;最后在OnItemSelectedListener的onItemSelected()方法中调用”adapter.notifyDataSetChanged();“方法即可。
虽然这种方式可以改变字体颜色,但不知道为什么?盼有知道的同学解惑。
9、可扩展的ListView:ExpandableListView
ExpandableListView为ListView子类,
10、代码:
banner中的ListView定义
<ListView android:id="@+id/bannerList" android:layout_width="fill_parent" android:layout_height="fill_parent" android:listSelector="@drawable/banneritemfocus" android:cacheColorHint="#00000000" android:drawSelectorOnTop="false" android:divider="#00000000"android:minHeight="?android:attr/listPreferredItemHeight" android:focusable="true" />
ListItem定义
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:paddingLeft="10dip" android:paddingRight="8dip" android:paddingTop="1dip" android:paddingBottom="1dip" > <ImageView android:id="@+id/bannerPlay" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/banner_play" /> <TextView android:id="@+id/bannertext" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:textSize="14dip" android:gravity="center_vertical" android:textColor="@color/white" android:paddingTop="1dip" android:paddingBottom="1dip" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="right" > <ImageView android:id="@+id/bannerok" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="right" android:visibility="invisible" android:src="@drawable/banner_ok" /> </LinearLayout></LinearLayout>
java代码:
private void showBannerListView() {if(bannerPop == null) {View v = getLayoutInflater().inflate(R.layout.banner, null);//加载包含ListView的定义bannerPop = new PopupWindow(v);//新建PopupWiondow对象bannerPop.setFocusable(true);//可获得焦点bannerPop.setOutsideTouchable(true);//可点击PopupWindow区域外事PopupWindow消失,会调用popupWIndow的dismiss()方法bannerPop.setBackgroundDrawable(new BitmapDrawable());//使PopuPWIndow响应退出按键bannerList = (ListView)v.findViewById(R.id.bannerList);bannerAdapter = new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ImageView bannerPlay = null;TextView name = null;if(convertView == null) {//优化ListView性能convertView = getLayoutInflater().inflate(R.layout.banner_item, null);bannerPlay = (ImageView)convertView.findViewById(R.id.bannerPlay);name = (TextView)convertView.findViewById(R.id.bannertext);convertView.setTag(R.id.bannerPlay, bannerPlay);convertView.setTag(R.id.bannertext, name);}else {bannerPlay = (ImageView)convertView.getTag(R.id.bannerPlay);name = (TextView)convertView.getTag(R.id.bannertext);}bannerPlay.setVisibility(View.GONE);//设置不可见name.setText(bannerData.get(position));//设置文字内容int select = bannerList.getSelectedItemPosition();if(position == curBannerIndex) {bannerPlay.setVisibility(View.VISIBLE);name.setTextColor(Color.rgb(0, 234, 255));//设置字体颜色 }else {name.setTextColor(Color.rgb(255, 255, 255));}return convertView;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic Object getItem(int position) {return position;}@Overridepublic int getCount() {return bannerData.size();}}; bannerList.setAdapter(bannerAdapter);bannerList.setOnItemSelectedListener(new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {Log.i(TAG, "00000in onItemSelected:position="+position+" id="+id+" view="+view+" parent="+parent);canceBannerDelayHide();hideBannerDelay();}@Overridepublic void onNothingSelected(AdapterView<?> parent) {Log.i(TAG, "11111111in onNothingSelected: parent="+parent);}});bannerList.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {canceBannerDelayHide();String name = bannerData.get(position);int index = name.indexOf(tvgap);//-1 为电影if(index == -1) {//电影,childPositionIndex = 0;}else {//电视剧,获得电视剧集数的childPositionIndex索引String aa = name.substring(index + tvgap.length());childPositionIndex = Integer.parseInt(aa) - 1;name = name.substring(0, index);}String item[] = null;for (int i = 0; i < favoriteData.size(); i++) {item = favoriteData.get(i);if(item[0].startsWith(name)){//可直接比较名称,获得groupPositionIndex 索引groupPositionIndex = i;break;}}hideBanner();changeMove();}});bannerList.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {if(event.getAction() == MotionEvent.ACTION_DOWN) {canceBannerDelayHide();}else if(event.getAction() == MotionEvent.ACTION_UP) {hideBannerDelay();}return false;}});}else {bannerAdapter.notifyDataSetChanged();}bannerList.setSelection(curBannerIndex);bannerPop.showAtLocation(vv, Gravity.TOP, controlx, controly);bannerPop.update(controlx, controly, controlWidth, controlHeight);hideBannerDelay();}
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- Android完全退出应用程序的方法
- Android(安卓)PreferenceActivity的介绍
- Android欢迎界面的创建方法
- android 设置全屏的两种方法
- android light
- android 打开系统设置界面