小编目前仍在Android学习中,本次模仿新浪微博随便看看栏目运行效果如下:
过程分析:
完成该项目大概可以分为三部分: 布局设计,自定义适配器 和 为适配器添加数据;
1.布局设计中,小编在mainactivity.xml文件中定义了一个ListView控件,并单独设定了一个数据项的布局list_cell,
数据项代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:background="#EEEEEE"> <ImageView android:id="@+id/ivIcon" android:layout_width="40dp" android:layout_height="40dp" android:layout_margin="3dp" android:contentDescription="@string/iv_des"/> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp"> <TextView android:id="@+id/tvName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="7dp" android:text="@string/tv_name" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/tvTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/tvContent" android:layout_alignParentRight="true" android:layout_marginRight="20dp" android:text="@string/tv_time" android:textAppearance="?android:attr/textAppearanceSmall" /> <TextView android:id="@+id/tvContent" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginTop="10dp" android:layout_below="@id/tvName" android:text="" /> </RelativeLayout> </LinearLayout>
mainactivity.xml主要页码如下:
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/tv_title" /> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="6dp"> </ListView>
2.自定义的适配器:在自定义适配器时,小编是通过继承BaseAdapter来实现的,主要代码如下:
private List<ListCell> list; private Context context; public MyAdapter(Context context, List<ListCell> list) { this.context = context; this.list = list; }
public View getView(int arg0, View arg1, ViewGroup arg2) { if (arg1 == null) { arg1 = LayoutInflater.from(context).inflate(R.layout.list_cell,null); } ListCell lc = list.get(arg0); ImageView iconId = (ImageView) arg1.findViewById(R.id.ivIcon); TextView tvName = (TextView) arg1.findViewById(R.id.tvName); TextView tvTime = (TextView) arg1.findViewById(R.id.tvTime); TextView tvContent = (TextView) arg1.findViewById(R.id.tvContent); iconId.setBackgroundResource(lc.getIconId()); tvName.setText(lc.getTvName()); tvTime.setText(lc.getTvTime()); tvContent.setText(lc.getTvContent()); return arg1; }
在此处构造方法中传递的2个参数,Context用来传递上下文,List则用来接收数据源,其中list<ListCell>中的实体类对应的是list_cell的实体类,此处不再详述
3.在MainActivity中进行最后的配置与测试:
package cn.edu.bzu.sinalook; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; public class MainActivity extends Activity { private MyAdapter adapter; private ListView lv; private List<ListCell> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); // adapter=new MyAdapter(MainActivity.this,list);/*此处必须放置在list数据之下,否则会报空指针异常,原因是此时的list为空*/ list = new ArrayList<ListCell>(); //测试数据 list.add(new ListCell(R.drawable.stage_0, "小红", "1分钟前", "我喜欢石头的懂事 kimi的害羞可爱 森蝶的细心照顾他人 天天的独当一面 诗龄的天马行空 童年真好!")); list.add(new ListCell(R.drawable.stage_1, "小橙", "19分钟前", "一百斤的石头我可能提不起来,但是 如果是一百斤人名币,我保证拎起来就跑。")); list.add(new ListCell(R.drawable.stage_2, "小黄", "21分钟前", "在别人面前评论我的是是非非好与不好跟你有何关系你为何缠我不放莫非你缺狗粮")); list.add(new ListCell(R.drawable.stage_3, "小绿", "33分钟前", "有多少人不想过11.11这个节日,又有多少人是在11.11找到了自己的神!")); list.add(new ListCell(R.drawable.stage_4, "小青", "43分钟前", "记得小时候,我爷爷写字非常漂亮,写了好多本毛笔字。学校里的老师没有一个比得上。现在连笔都拿不稳了")); list.add(new ListCell(R.drawable.stage_5, "小蓝", "58分钟前", "[别潇洒了自己苦了父母 ]")); list.add(new ListCell(R.drawable.stage_6, "小紫", "1小时前", " 渐渐知道了,很多东西可遇而不可求,不属于自己的,何必拼了命去在乎。")); list.add(new ListCell(R.drawable.stage_7, "小黑", "1小时前", " 曾几何时对你说过要陪你到海枯石烂,可是到了最后你我还是成为了最熟悉的陌生人! ----MC小凡")); list.add(new ListCell(R.drawable.stage_4, "小白", "2小时前", " 其实最喜欢你的内个人是一直陪伴你的人,不是开心的时候就找你,不开心的时候就把你抛弃在一边!---MC小凡")); adapter=new MyAdapter(MainActivity.this,list); lv.setAdapter(adapter); } }
到了这里,一个模仿新浪微博随便看看的项目就完成了~~~
时间: 2024-10-10 03:35:44