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();}

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android完全退出应用程序的方法
  5. Android(安卓)PreferenceActivity的介绍
  6. Android欢迎界面的创建方法
  7. android 设置全屏的两种方法
  8. android light
  9. android 打开系统设置界面

随机推荐

  1. ImageButton 和ImageWell 样式的浅析
  2. Android(安卓)Toolbar详解-实现Material
  3. Android EditText 限制输入的字数
  4. Android内核的编译
  5. Activity&Fragment生命周期详解
  6. 一界面相关知识
  7. Android .9图
  8. android 学习笔记 Android SDK 中重要的
  9. android上的http
  10. 安卓view设置为满屏幕