- 画出大体布局格式,分析界面适合用哪种类型的布局,
- 创建Head实体类,包括要显示内容
- 在activitymain.xml中添加ListView组件,创建head_list布局文件,
- 创建HeadAdapter类,该类继承自ArrayAdapter
- 在MainActivity中创建数据源,创建适配器,将arrayadapter和adapter关联起来
部分主要代码如下:
Head.java
package com.edu.ch1;
public class Head {
private String name;
private int imageid;
private String time;
private String neirong;
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public Head(String name, int imageid,String time,String neirong) {
super();
this.name = name;
this.imageid = imageid;
this.time=time;
this.neirong=neirong;
}
public String getNeirong() {
return neirong;
}
public void setNeirong(String neirong) {
this.neirong = neirong;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getImageid() {
return imageid;
}
public void setImageid(int imageid) {
this.imageid = imageid;
}
}
activitymain.xml
<TextView
android:id="@+id/look"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/look"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
<ListView
android:id="@+id/lvhead"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
head_list.xml
<?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="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivhead"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/head1" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/tvhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text"/>
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="14dp"
android:textColor="#00FF00"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/neirong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_below="@+id/time"
android:text="Medium Text"
android:textColor="#99FF99"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
</LinearLayout>
</LinearLayout>
HeadAdapter.java
public class HeadAdapter extends ArrayAdapter{
private int resourceid;
public HeadAdapter(Context context, int textresource,List<Head>head) {
super(context, textresource,head);
// TODO Auto-generated constructor stub
resourceid=textresource;
}
public View getView(int position, View convertView, ViewGroup parent) {
Head head = (Head) getItem(position);
View view = null;
ViewHolder viewHolder;
if (convertView == null) {
view = LayoutInflater.from(getContext()).inflate(resourceid, null);//将布局文件转化为view
viewHolder = new ViewHolder();
viewHolder.ivhead = (ImageView) view.findViewById(R.id.ivhead);
viewHolder.tvhead = (TextView) view.findViewById(R.id.tvhead);
viewHolder.time = (TextView) view.findViewById(R.id.time);
viewHolder.neirong = (TextView) view.findViewById(R.id.neirong);
view.setTag(viewHolder);
} else {
view = convertView;
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.ivhead.setImageResource(head.getImageid());
viewHolder.tvhead.setText(head.getName());
viewHolder.time.setText(head.getTime());
viewHolder.neirong.setText(head.getNeirong());
return view;
}
class ViewHolder {
ImageView ivhead;
TextView tvhead;
TextView time;
TextView neirong;
}
}
MainActivity.java
public class MainActivity extends Activity {
private ListView lvhead;
private List<Head> headList = new ArrayList<Head>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据源
initFruits();
lvhead = (ListView) findViewById(R.id.lvhead);
//创建适配器
HeadAdapter adapter=new HeadAdapter(this, R.layout.head_list,headList);
//将arrayadapter和adapter关联起来
lvhead.setAdapter(adapter);
lvhead.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adpterView, View view, int position,
long id) {
Head head = headList.get(position);
Toast.makeText(MainActivity.this, head.getName(),
Toast.LENGTH_SHORT).show();
}
});
}
private void initFruits() {
// TODO Auto-generated method stub
Head head1 = new Head("moon", R.drawable.head1,"1小时前","我们相信向上、向善的力量,用文明、理性让网络空间更加清朗。我爱你,中国![心]");
headList.add(head1);
Head head2 = new Head("小小", R.drawable.head2,"59分钟前","正装外套的硬朗廓形与蕾丝的柔美形成了强烈的视觉对比,打造出充满对比冲突又极富都市街头风格的时尚造型。");
headList.add(head2);
Head head3 = new Head("丫头", R.drawable.head3,"58分钟前","终于以艺声的身份回归了。感谢过去两年一直等待我的ELF,我会用歌声来回报你们");
headList.add(head3);
Head head4 = new Head("sun", R.drawable.head4,"57分钟前","烟台的海,连绵天际的美丽 爱心");
headList.add(head4);
Head head5= new Head("moon", R.drawable.head5,"56分钟前","人根本到不了天堂,因为人死后,灵魂会飞向天空,但在碰到云彩的一刹那,就会变成雨落下来。——岩井俊二《燕尾蝶》");
headList.add(head5);
Head head6 = new Head("小小", R.drawable.head6,"55分钟前","好好学习天天向上");
headList.add(head6);
Head head7 = new Head("丫头", R.drawable.head7,"54分钟前","好好学习天天向上");
headList.add(head7);
Head head8 = new Head("sun", R.drawable.head8,"53分钟前","好好学习天天向上");
headList.add(head8);
Head head9 = new Head("丫头", R.drawable.head9,"52分钟前","好好学习天天向上");
headList.add(head9);
Head head10 = new Head("丫头", R.drawable.head10,"51分钟前","好好学习天天向上");
headList.add(head10);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}