1.运行效果图:
2.分析:
项目模拟新浪微博随便看看,掌握ListView控件的使用和自定义ListAdapter适配器中的方法,顶部是自定义的表头文件,中间ListView中的数据中图片、昵称、文本都是在layout目录中定义的listview.xml资源;在layout中的main.xml中用RadioButton按钮添加了底部选择按钮功能。
3.主要代码:
(1).title.xml
(2).listvie.xml
(3).main.xml
(4).activity_main.xml
另外在values下创建style.xml文件
类的代码:
实体类:
package en.bzu.edu.sina;
public class Listsina {
private int image;
private String name;
private String info;
private String time;
//构造函数
public Listsina(int image, String name, String info,String time) {
super();
this.image = image;
this.name = name;
this.info = info;
this.time=time;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
自定义Adapter类:
package en.bzu.edu.sina;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class ListAdapter extends ArrayAdapter {
private int resourceId;
private Context context;
public ListAdapter(Context context, int textViewResourceId,List
listsina) {
super(context, textViewResourceId,listsina);
resourceId = textViewResourceId;
this.context=context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Listsina ls = (Listsina) getItem(position);
//1.
//View view = LayoutInflater.from(getContext()).inflate(resourceId, null);
//2.
View view = LayoutInflater.from(context).inflate(resourceId, null);
ImageView iv = (ImageView) view.findViewById(R.id.iv);
TextView ivname = (TextView) view.findViewById(R.id.ivname);
TextView info=(TextView) view.findViewById(R.id.info);
TextView time=(TextView) view.findViewById(R.id.time);
iv.setImageResource(ls.getImage());
ivname.setText(ls.getName());
info.setText(ls.getInfo());
time.setText(ls.getTime());
return view;
}
}
package en.bzu.edu.sina;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity {
private ListView lv;
//数据源
private List
weibolist = new ArrayList
();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intList();
lv = (ListView) findViewById(R.id.lv);
//创建adapter
ListAdapter adapter=new ListAdapter(this, R.layout.listview,weibolist);
//绑定AdapterView和Adapter之间的关联
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView
adpterView, View view, int position,
long id) {
Listsina ls = weibolist.get(position);
Toast.makeText(MainActivity.this, ls.getName(),
Toast.LENGTH_SHORT).show();
}
});
}
private void intList() {
Listsina a = new Listsina (R.drawable.a,"嘟嘟","①万物至此皆已长大,故名立夏。②按气候学标准,日均气温稳定22℃以上为夏季;③ 南方有立夏饮茶、吃五色饭、称人的习俗;④江浙有转蛋、碰蛋、绘蛋等民俗;告别春天,#迎接夏天#!","半分钟前");
weibolist.add(a);
Listsina b= new Listsina(R.drawable.b, "潇湘雨雨雨", "全世界都不相信你,没关系,只要你相信自己,你就是偶像,如果不认命,那就去拼命。","3分钟前");
weibolist.add(b);
Listsina c= new Listsina(R.drawable.c, "悠悠嗯", "故事设定在上世纪30年代的伦敦,但主人公不再是原著小说中的Henry Jekyll,而是他的孙子Robert Jekyll,他企图解开自己身上的“诅咒”之谜(原著故事讲述一个试图将人性善恶分隔成两面的人,善良的一面是哲基尔医生,邪恶的一面则是海德先生.)","31分钟前");
weibolist.add(c);
Listsina d= new Listsina(R.drawable.d, "我是呀lala", "【北京迎64年来最冷5月天 市民称差点冻死在夏天】“好不容易熬过了冬天,却差点儿冻死在夏天。”这是昨天京城市民发自内心的感受。5月上旬最后一天,时已立夏,南郊观象台最高气温终止在12.4℃,昨天成为1951年以来京城最冷的5月上旬的日子。放眼大街,眼瞅着不少人穿上了羽绒服...北京晨报","46分钟前");
weibolist.add(d);
}
public void Back(View v){
this.finish();
}
public void Edit(View v){}
@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;
}
}