Android:ListView、ArrayAdapter、ListView属性、获取listview行对象、滚动滑动

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Override
     protected  void  onCreate(Bundle savedInstanceState)
     {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
                                                                                       
         ListView listView = (ListView) findViewById(R.id.listView1);
                                                                                       
         ArrayList<String> objects =  new  ArrayList<String>();
         objects.add( "aaaaaaaaaaaaaaaaaaa" );
         objects.add( "bbbbbbbbbbbbbbbbbbb" );
         objects.add( "ccccccccccccccccccc" );
                                                                                       
         //ArrayAdapter只支持显示一个textview
         ArrayAdapter adapter =  new  ArrayAdapter( this , R.layout.list_item1, objects);
         listView.setAdapter(adapter);
                                                                                       
     }



ListView自定义设置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
public  class  MainActivity  extends  ListActivity
{
     private  String[] ss =  new  String[]{ "title1" , "content" , "content" , "title2" , "content" , "content" , "content" , "content" };
                                                  
     @Override
     protected  void  onCreate(Bundle savedInstanceState)
     {
         super .onCreate(savedInstanceState);
         //setContentView(R.layout.activity_main);
                                                      
         setListAdapter( new  BaseAdapter()
         {
             @Override
             public  View getView( int  position, View convertView, ViewGroup parent)
             {
                 LayoutInflater inflater = getLayoutInflater();
                 TextView textView =  null ;
                 if (position ==  0  || position ==  3 ) //判断对应布局
                 {
                     textView = (TextView) inflater.inflate(R.layout.mylayout,  null );
                 }
                 else
                 {
                     textView = (TextView) inflater.inflate(android.R.layout.simple_list_item_1,  null );
                 }
                 textView.setText(ss[position]);
                 return  textView;
             }
                                                          
             @Override
             public  int  getCount()
             {
                 return  ss.length;
             }
                                                          
             @Override
             public  boolean  areAllItemsEnabled() //先设置成全部不可操作
             {
                 return  false ;
             }
                                                          
             @Override
             public  boolean  isEnabled( int  position) //设置不可操作的列表项
             {
                 if (position ==  0  || position ==  3 )
                 {
                     return  false ;
                 }
                 else
                 {
                     return  true ;
                 }
             }
                                                          
             @Override
             public  long  getItemId( int  position)
             {
                 return  0 ;
             }
                                                          
             @Override
             public  Object getItem( int  position)
             {
                 return  null ;
             }
         });
     }
                                                  
     @Override
     public  boolean  onCreateOptionsMenu(Menu menu)
     {
         getMenuInflater().inflate(R.menu.activity_main, menu);
         return  true ;
     }
                                                  
}




注:

1.R.layout.list_item1这个layout里只能放textview.

2.ListView相关属性:

1
2
3
4
5
6
7
8
/**
  * divider  间隔颜色
  * dividerheight  间隔高度
  * fastscrollenable    快进条滚动可见,内容必须大于三屏
  * fastallwaysenable   快进条总是可见
  * cachecolorhint      缓存背景,设置为透明,滑动时的背景颜色(设置背景图片用)
  * listSelector="@drawable/grouplist_item_bg"  设置行布局被选中时的背景
  */


3.获取listview行对象:getAdapter()得到适配器对象

1
2
3
4
5
6
7
8
9
10
//测试监听listview
@Override
public  void  onItemClick(AdapterView<?> parent, View view,  int  position,  long  id)
{
     PlaylistJson json = (PlaylistJson) mListView_playlist.getAdapter().getItem(position);
     if  ( null  != mBinder)
     {
         mBinder.play(MyContant.URL_HOST + json.link);
     }
}


重写适配器里的方法:

1
2
3
4
5
6
7
8
9
10
11
12
//适配器里的两个方法设置
@Override
public  long  getItemId( int  position)
{
     return  0 ;
}
               
@Override
public  Object getItem( int  position)
{
     return  mPlaylistJsonList.get(position);
}



4.将数据集合保存到adapter内部的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
class  SpecialAdapter  extends  BaseAdapter
     {
         //将数据集合转移到适配器里
         private  ArrayList<SpecialInfo> dataList;
          
         @Override
         public  View getView( int  position, View convertView, ViewGroup parent)
         {
             if  (convertView ==  null )
             {
                 LayoutInflater inflater = getActivity().getLayoutInflater();
                 convertView = inflater.inflate(R.layout.speciallist_item,  null );
             }
              
             ImageView iv_main = ViewHolder.get(convertView, R.id.speciallist_item_image);
             TextView tv_title = ViewHolder.get(convertView, R.id.speciallist_item_title);
              
             SpecialInfo data = dataList.get(position);
             if  (position ==  0 )
             {
                 layoutView.setVisibility(View.GONE);
             }
             else
             {
                 layoutView.setVisibility(View.VISIBLE);
             }
              
             Bitmap bm = BitmapFactory.decodeResource(getActivity().getResources(), data.icon);
             iv_main.setImageBitmap(bm);
             tv_title.setText(data.title);
  
             return  convertView;
         }
          
         @Override
         public  int  getCount()
         {
             return  dataList ==  null  0  : dataList.size();
         }
          
         @Override
         public  Object getItem( int  position)
         {
             return  null ;
         }
          
         @Override
         public  long  getItemId( int  position)
         {
             return  0 ;
         }
          
         //更新数据
         public  void  setDataList(ArrayList<SpecialInfo> list)
         {
             if  (list !=  null )
             {
                 dataList = (ArrayList<SpecialInfo>) list.clone();
                 notifyDataSetChanged();
             }
         }
          
         //释放数据
         public  void  clearDataList()
         {
             if  (dataList !=  null )
             {
                 dataList.clear();
             }
             notifyDataSetChanged();
         }
          
     }

参考资料:Android笔记:常见错误问题及解决方法汇总




注:

1.listview滚动:

1
getListView().setSelection( int );

2.listview滑动:

1
getListView().smoothScrollToPosition( int );





本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1201266,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
Android开发
Android使用ViewPager做无限轮播,人为滑动时停止
Android使用ViewPager做无限轮播,人为滑动时停止
77 2
|
3月前
|
Android开发
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
60 0
|
5月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
65 2
|
5月前
|
存储 Java Android开发
Android上在两个Activity之间传递Bitmap对象
Android上在两个Activity之间传递Bitmap对象
39 2
|
4月前
|
Android开发
Android仿高德首页三段式滑动
Android仿高德首页三段式滑动
139 0
|
5月前
|
前端开发 API Android开发
25. 【Android教程】列表控件 ListView
25. 【Android教程】列表控件 ListView
164 2
|
5月前
|
Java Android开发
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
143 0
|
5月前
|
编解码 Android开发
Android 解决TextView多行滑动与NestedScrollView嵌套滑动冲突的问题
Android 解决TextView多行滑动与NestedScrollView嵌套滑动冲突的问题
89 0
|
5月前
|
XML Android开发 UED
|
6月前
|
Android开发
Android使用ViewPager实现图片轮播系列之三:手动滑动 + 左右箭头(1)
Android使用ViewPager实现图片轮播系列之三:手动滑动 + 左右箭头(1)