Listview与Adapter的关联应用
2015-05-05 16:28
134 查看
新浪微博随便看看小界面
画出大体布局格式,分析界面适合用哪种类型的布局,
创建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;
}
}
画出大体布局格式,分析界面适合用哪种类型的布局,
创建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;
}
}
相关文章推荐
- Android中的Adapter如何应用到listView中的
- Listview 应用详解--应用适配器arrayadapter
- 从应用框架AF角度看ListView和Adapter by 高焕堂
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
- 从应用框架角度看ListView与Adapter类别
- Android中BaseAdapter在ListView中的应用与优化
- android ListView 和 BaseAdapter 应用
- listView和adapter的简单应用
- android应用开发揭秘例4-4笔记(ListView及Adapter的使用)
- Adapter,ListView的应用
- Android成长之路(8)——ListView优化和自定义Adapter的应用
- Listview与adapter的关系及应用(超详细)
- listview简单应用之ArrayAdapter(一)
- Java泛型应用之打造Android中ListView和GridView万能适配器【CommonAdapter】--超简洁写法
- Android采用ListView实现列表数据的显示--Adapter应用
- Android SimpleAdapter应用介绍,代码+解释 ListView使用+滚动监听用scoll
- listView Adapter 的应用
- WinForm TreeView的应用以及和ListView的关联
- android应用开发全程实录-你有多熟悉listview? getView重写 inflate结合各种Adapter实例
- android 自定义adapter extends BaseAdapter,做有自己布局的listView