模拟新浪微博随便看看

效果图:

 

程序分析:

1、两部分:主页面和ListView页面

2、编写实体类和ListView自定义适配器MyAdapter

3、MainActivity中连接适配器和实体类,绑定数据源与控件

实现代码:

1、自定义适配器MyAdapter:

 1 package cn.edu.bzu.sinalook;
 2 
 3 import java.util.List;
 4 
 5 import android.content.Context;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 import android.view.ViewGroup;
 9 import android.widget.BaseAdapter;
10 import android.widget.ImageView;
11 import android.widget.TextView;
12 
13 
14 /**
15  * @author 
16  * Date: 2015-5-4
17  * Des: 自定义的适配器,
18  *
19  */
20 public class MyAdapter extends BaseAdapter {
21 
22  private List<ListCell> list;
23  private Context context;
24  
25  public MyAdapter(Context context, List<ListCell> list) {
26   this.context = context;
27   this.list = list;
28  }
29  
30  @Override
31  public int getCount() {
32   return list.size();//列表长度
33  }
34 
35  @Override
36  public Object getItem(int position) {
37   return list.get(position);//根据arg0 返回列表项
38  }
39 
40  @Override
41  public long getItemId(int position) {
42   return position;
43  }
44 
45  @Override
46  public View getView(int position, View convertView, ViewGroup parent) {
47   
48   if (convertView == null) {
49    cinvertView = LayoutInflater.from(context).inflate(R.layout.list_cell,null);
50   }
51   
52   ListCell lc = list.get(position);
53   
54   ImageView iconId = (ImageView) arg1.findViewById(R.id.ivIcon);
55   TextView tvName = (TextView) arg1.findViewById(R.id.tvName);
56   TextView tvTime = (TextView) arg1.findViewById(R.id.tvTime);
57   TextView tvContent = (TextView) arg1.findViewById(R.id.tvContent);
58   
59   iconId.setBackgroundResource(lc.getIconId());
60   tvName.setText(lc.getTvName());
61   tvTime.setText(lc.getTvTime());
62   tvContent.setText(lc.getTvContent());
63   
64   return convertView;
65  }
66 
67 }

 

PS:继承BaseAdapter 需要实现getCount,getItem,getItemId,getView以及构造方法等方法,里面最重要的是getView方法。

2、编写MainActivity

 

 1 package cn.edu.bzu.sinalook;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import android.app.Activity;
 7 import android.os.Bundle;
 8 import android.widget.ListView;
 9 
10 public class MainActivity extends Activity {
11 
12     private MyAdapter adapter;
13     private ListView lv;
14     private List<ListCell> list;
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19         
20         lv = (ListView) findViewById(R.id.lv);
21         
22
23 24 list = new ArrayList<ListCell>(); 25 //测试数据 26 list.add(new ListCell(R.drawable.p1, "梁欢", "1分钟前", " 我们熬过了冬天,却冻死在了夏天。")); 27 list.add(new ListCell(R.drawable.p2, "资深高端黑", "6分钟前", " 很多外省人都不知道,云南高考要算体育课成绩,包括弩箭射击、溜索渡河以及野外搏杀。我弩箭射击10箭95环,溜索过金沙江3分52秒,野外搏杀的时候,用弩箭射杀了3个昆一中的学生,割喉2个昆三中的学生,最后被一个师大附中的学生用陷阱陷害,差点没命参加高考。")); 28 list.add(new ListCell(R.drawable.p3, "琢磨先生", "12分钟前", " 晚安。明天又是早上 5 点开拍。")); 29 list.add(new ListCell(R.drawable.p6, "和菜头", "25分钟前", " 今天朋友圈有两类人最讨厌:一类是晒自己妈还要鄙视别人不孝顺的。一类是鄙视别人晒妈的,说得好像自己不晒就多孝顺一样,人家晒自己妈管你什么事,没准那是将来的丈母娘,早见见有什么不好呢……")); 30 list.add(new ListCell(R.drawable.p4, "李开复", "1小时前", " 俗话说一白遮百丑")); 31 list.add(new ListCell(R.drawable.p5, "宋英杰", "1小时前", " 仅靠有限的信息公开和警方人员讲述,显然无法平息公众的疑问,更无法缓解人们对开枪的疑惧。")); 32 list.add(new ListCell(R.drawable.p6, "亚伟的眼睛", "2小时前", "老妈50多岁了,年轻的时候结婚没有拍过婚纱照,团购了一个,给妈妈补拍个婚纱照。")); 33 list.add(new ListCell(R.drawable.p7, "赵大宝", "2小时前", " 评论有些朋友不要拿“打仗的时候看彩排吗?”“形式主义有什么用”开玩笑。这是一个军队的基本素养。为解放军的精神劲点赞!")); 34 list.add(new ListCell(R.drawable.p2, "小白", "3小时前", " 不要等到来不及,再说祝您快乐。")); 35 36 adapter=new MyAdapter(MainActivity.this,list); 37 38 lv.setAdapter(adapter); 39 } 40 41 }

 

PS:注意步骤:建立数据源,实例化控件,绑定适配器

  由于技术不佳,没有做出更好的效果,代码也没有太过于优化,下次一定会加强锻炼,争取让自己的程序效率高,更易看懂。

posted @ 2015-05-11 11:33  挚爱粉紫  阅读(223)  评论(0编辑  收藏  举报