Android:ListView、SimpleAdapter、设置不同行布局、getViewTypeCount、getItemViewType

简介:
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
public  class  MainActivity  extends  Activity
{
                
     @Override
     protected  void  onCreate(Bundle savedInstanceState)
     {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
                    
         ListView listView = (ListView) findViewById(R.id.listView1);
                    
         ArrayList<HashMap<String, String>> data =  new  ArrayList<HashMap<String,String>>();
                    
         for  ( int  i =  0 ; i <  30 ; i++)
         {
             HashMap<String, String> object =  new  HashMap<String, String>();
             object.put( "title" , "title"  + i );
             object.put( "subtitle" , "subtitle"  + i );
             object.put( "time" , "time"  + i );
             data.add(object);
         }
                    
         String[] from =  new  String[]{ "title" , "subtitle" , "time" }; //作为hashmap的key使用
         int [] to =  new  int []{R.id.textView_title,R.id.textView_subtitle,R.id.textView_time};
         SimpleAdapter simpleAdapter =  new  SimpleAdapter( this , data, R.layout.relaout, from, to);
         listView.setAdapter(simpleAdapter);
     }
                
     @Override
     public  boolean  onCreateOptionsMenu(Menu menu)
     {
         getMenuInflater().inflate(R.menu.activity_main, menu);
         return  true ;
     }
                
}


注:SimpleAdapter支持的控件有限。


==================================================================

二、设置不同行布局

代码如下:

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
     class  WeiboListAdapter  extends  BaseAdapter
     {
         private  final  static  int  VIEW_TYPE1 =  0 ;
         private  final  static  int  VIEW_TYPE2 =  1 ;
         private  final  static  int  VIEW_TYPE_COUNT = VIEW_TYPE2 +  1 ;
         
         @Override
         public  View getView( int  position, View convertView, ViewGroup parent)
         {
             CommentViewHolder commentHolder =  null ;
             ViewHolder holder =  null ;
             
             int  type = getItemViewType(position);
             
             if  (convertView ==  null )
             {
                 if  (type == VIEW_TYPE1)
                 {
                     // 微博内容
                     convertView = getLayoutInflater().inflate(R.layout.weibo_item,  null );
                     holder =  new  ViewHolder();
                     holder.headerImg = (ImageView) convertView.findViewById(R.id.weibo_item_iv_headerImg);
                     holder.userName = (TextView) convertView.findViewById(R.id.weibo_item_tv_userName);
                     holder.commentNum = (TextView) convertView.findViewById(R.id.weibo_item_tv_commentNum);
                     holder.forwardTimes = (TextView) convertView.findViewById(R.id.weibo_item_tv_forwardTimes);
                     holder.content = (TextView) convertView.findViewById(R.id.weibo_item_tv_content);
                     holder.contentImg = (ImageView) convertView.findViewById(R.id.weibo_item_iv_contentImg);
                     holder.forwardContent = (TextView) convertView.findViewById(R.id.weibo_item_tv_forwardContent);
                     holder.forwardContentImg = (ImageView) convertView.findViewById(R.id.weibo_item_iv_forwardContentImg);
                     holder.from = (TextView) convertView.findViewById(R.id.weibo_item_tv_from);
                     holder.time = (TextView) convertView.findViewById(R.id.weibo_item_tv_time);
                     holder.retweetedLayout = convertView.findViewById(R.id.weibo_item_retweetedLayout);
                     convertView.setTag(holder);
                 }
                 else
                 {
                     // 评论列表
                     commentHolder =  new  CommentViewHolder();
                     convertView = getLayoutInflater().inflate(R.layout.weibocomment_item,  null );
                     commentHolder.headerImg = (ImageView) convertView.findViewById(R.id.weibocomment_item_iv_headerImg);
                     commentHolder.userName = (TextView) convertView.findViewById(R.id.weibocomment_item_tv_userName);
                     commentHolder.time = (TextView) convertView.findViewById(R.id.weibocomment_item_tv_time);
                     commentHolder.content = (TextView) convertView.findViewById(R.id.weibocomment_item_tv_content);
                     
                     convertView.setTag(commentHolder);
                 }
             }
             else
             {
                 if  (type == VIEW_TYPE1)
                 {
                     holder = (ViewHolder) convertView.getTag();
                 }
                 else
                 {
                     commentHolder = (CommentViewHolder) convertView.getTag();
                 }
             }
             
             WeiboJson weiboJson = mDataList.get(position);
             if  (type == VIEW_TYPE1)
             {
                 updataWeiboData(holder, weiboJson);
             }
             else
             {
                 updateCommentData(commentHolder, weiboJson);
             }
             
             return  convertView;
             
         }
         
         @Override
         public  int  getCount()
         {
             return  mDataList.size();
         }
         
         @Override
         public  int  getItemViewType( int  position)
         {
             if  (position ==  0 )
             {
                 return  VIEW_TYPE1;
             }
             else
             {
                 return  VIEW_TYPE2;
             }
         }
         
         @Override
         public  int  getViewTypeCount()
         {
             
             return  VIEW_TYPE_COUNT;
         }
         
         @Override
         public  Object getItem( int  position)
         {
             return  mDataList.get(position);
         }
         
         @Override
         public  long  getItemId( int  position)
         {
             return  position;
         }
         
     }




本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1202086,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
|
3月前
|
XML API Android开发
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
本文介绍了如何使用androidx.preference库快速创建具有一级和二级菜单的Android设置界面的步骤和示例代码。
122 1
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
|
3月前
|
移动开发 监控 前端开发
构建高效Android应用:从优化布局到提升性能
【7月更文挑战第60天】在移动开发领域,一个流畅且响应迅速的应用程序是用户留存的关键。针对Android平台,开发者面临的挑战包括多样化的设备兼容性和性能优化。本文将深入探讨如何通过改进布局设计、内存管理和多线程处理来构建高效的Android应用。我们将剖析布局优化的细节,并讨论最新的Android性能提升策略,以帮助开发者创建更快速、更流畅的用户体验。
67 10
|
1月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
113 0
|
2月前
|
Android开发
Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果
本文介绍了 `SpannableString` 在 Android 开发中的强大功能,包括如何在单个字符串中应用多种样式,如颜色、字体大小、风格等,并提供了详细代码示例,展示如何设置文本颜色、添加点击事件等,助你实现丰富文本效果。
255 3
|
3月前
|
编解码 Android开发
【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手
本文介绍了Android Studio中使用ConstraintLayout布局的方法,通过创建布局文件、设置控件约束等步骤,快速上手UI设计,并提供了一个TV Launcher界面布局的绘制示例。
58 1
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
152 0
|
3月前
|
开发工具 Android开发
Android项目架构设计问题之外部客户方便地设置回调如何解决
Android项目架构设计问题之外部客户方便地设置回调如何解决
28 0
|
Android开发
Android ListView Adapter的getItemViewType和getViewTypeCount多种布局
 《Android ListView Adapter的getItemViewType和getViewTypeCount多种布局》 在Android的ListView中,如果在一个ListView中要实现多种样式的ListView布局样式,则需要在ListView的适配器Adapter中用到:getItemViewType()和getViewTypeCount()。
1106 0
下一篇
无影云桌面