前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ListView专题

ListView专题

作者头像
xiangzhihong
发布2018-01-26 10:59:07
1.1K0
发布2018-01-26 10:59:07
举报
文章被收录于专栏:向治洪

ListView专题

1.ListView属性:

  1. fadingEdge属性 ListView上边和下边有黑色的阴影,android : fadingEdge = "none"后就不会有阴影了
  2. scrollbars属性,隐藏滚动条 android : scrollbars = "none" setVerticalScrollBarEnabled(true);
  3. fadeScrollbars属性 android : fadeScrollbars = "true" 设置此值为true就可以实现滚动条的自动隐藏和显示。
  4. fastScrollEnabled属性 快速滚动滑块 android : fastScrollEnabled = "true" mListView.setFastScrollEnabled(true);
  5. drawSelectorOnTop属性 When set to true, the selector will be drawn over the selecteditem. Otherwise the selector is drawn behind the selected item. Thedefault value is false. android:drawSelectorOnTop = "false" 点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的

2.ListView.setEmptyView()没有效果

有时调用setEmptyView没有效果,这是因为我们设置的这个EmptyView必须和该ListView在同一个布局体系中 如:下面这样的代码有些时候会没有效果

代码语言:javascript
复制
View loadingView = View.inflate(getActivity(), R.layout.loading,  null); 
mPullLoadListView.setEmptyView(loadingView);          
mPullLoadListView.setAdapter(adapter);
  • Fragment中添加下面代码就可以了。 View loadingView = View.inflate(getActivity(), R.layout.loading, null); //添加到同一布局体系中 getActivity().addContentView(loadingView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT )); mPullLoadListView.setEmptyView(loadingView); mPullLoadListView.setAdapter(adapter);
  • Activity中 View empty = getLayoutInflater().inflate(R.layout.empty_list_item, null, false); addContentView(empty, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); mPullLoadListView.setEmptyView(empty);

3.ListView调用addHeaderView后,onItemClick时位置不正确

addHeaderView()以及addFooterView()一定要在调用setAdapter()方法之前调用,不然会报错。 当ListView通过addHeaderView添后,在onItemClick中的position会加上Header的个数,所以这时候在获取数据的时候要对位置进行处理。

下面两种方法都可以:

  1. 第一种 public void onItemClick(AdapterView <?> parent, View v, int position, long id) { //parent.getAdapter().getItem(position)能得到真正位置的数据 doSomething(parent.getAdapter().getItem(position)); }
  2. 第二种 mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { int headerViewCount = mListView.getHeaderViewsCount(); int realPos = position - mListView.getHeaderViewsCount(); if (realPos < 0) return; ......这样realPos就是真是的位置 } });

4.ListView.addHeadrView()添加ViewPager不显示的问题

addHeaderView()添加ViewPager后不能显示出来的问题:

代码语言:javascript
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <android.support.v4.view.ViewPager
        android:id="@+id/vp_auto_circle"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </android.support.v4.view.ViewPager>
    <com.ifeng.padvideo.widget.IndicatorTabsView
        android:id="@+id/stv_auto_circle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </com.ifeng.padvideo.widget.IndicatorTabsView>
</LinearLayout>
代码语言:javascript
复制
mHeaderView = View.inflate(this, R.layout.auto_circle_viewpager, null);
mAutoCircleViewPager = (ViewPager) mHeaderView.findViewById(R.id.vp_auto_circle);
//addHeaderView要在ListView的setAdapter前添加            
mListView.addHeaderView(mHeaderView);

注意ViewPager的布局中宽高不能够使用wrap_content可以使用match_parent但是上面显示不出来也是由于match_parent的问题, 如果我们将布局中的layout_height="200dip",这样就能够显示出来ViewPager

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/02/22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ListView专题
    • 1.ListView属性:
      • 2.ListView.setEmptyView()没有效果
        • 3.ListView调用addHeaderView后,onItemClick时位置不正确
          • 4.ListView.addHeadrView()添加ViewPager不显示的问题
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档