您的位置:首页 > 其它

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: