一、自定义listview的布局,首先是布局文件mylist.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/subject"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:singleLine="true"
android:maxWidth="350sp"
android:minWidth="50sp"
android:text="textview1"
android:ellipsize="end"
android:textSize="25sp"
android:textStyle="bold" />
<TextView
android:id="@+id/insert_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/info_type"
android:layout_alignBottom="@+id/info_type"
android:layout_alignParentRight="true"
android:layout_marginRight="27dp"
android:gravity="right"
android:singleLine="true"
android:text="textview3"
android:textSize="15sp"
android:textStyle="normal" />
<TextView
android:id="@+id/info_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/subject"
android:layout_marginRight="14dp"
android:layout_toLeftOf="@+id/insert_time"
android:singleLine="true"
android:text="textview2"
android:textSize="15sp"
android:textStyle="normal" />
</RelativeLayout>
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:singleLine="false"
android:maxLines="2"
android:ellipsize="end"
android:textStyle="normal" />
</LinearLayout>
------------------------------------------------------------------
二、其次是在自己定义的adapter中加载布局文件,并根据需要设置显示样子
public class NoticeAdapter extends BaseAdapter {
private Context context ;
private LayoutInflater listContainer;
private Handler listHandler;
public final class ListItemView{
public TextView subject;
public TextView info_type;
public TextView insert_time;
public TextView content;
}
public NoticeAdapter(Context context,Handler listHandler){
this.context = context;
this.listHandler = listHandler;
listContainer = LayoutInflater.from(context); //创建视图容器并设置上下文
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listItems.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
/**
* 显示物品详情
* @param clickID
*/
private void showDetailInfo(int clickID) {
new AlertDialog.Builder(context)
.setTitle("公告详情:" + listItems.get(clickID).getSubject())
.setMessage(listItems.get(clickID).getContent())
.setPositiveButton("确定", null)
.show();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.v("method", "getView");
//自定义视图
ListItemView listItemView = null;
if (convertView == null) {
listItemView = new ListItemView();
//获取list_item布局文件的视图
convertView = listContainer.inflate(R.layout.mylist, null);
//获取控件对象
listItemView.info_type = (TextView)convertView.findViewById(R.id.info_type);
listItemView.subject = (TextView)convertView.findViewById(R.id.subject);
listItemView.insert_time = (TextView)convertView.findViewById(R.id.insert_time);
listItemView.content= (TextView)convertView.findViewById(R.id.content);
//设置控件集到convertView
convertView.setTag(listItemView);
}else {
listItemView = (ListItemView)convertView.getTag();
}
// Log.e("image", (String) listItems.get(position).get("title")); //测试
// Log.e("image", (String) listItems.get(position).get("info"));
//设置文字和图片
if (listItems.get(position).getStatus()==1) {
listItemView.subject.setText(listItems.get(position).getSubject());
//设置粗体与否
}
else {
listItemView.subject.setText(listItems.get(position).getSubject());
//设置粗体与否
}
if(listItems.get(position).getInfo_type().equals("1")){
listItemView.info_type.setText("number1");
listItemView.info_type.setTextColor(Color.rgb(67, 188, 38));
}
else {
listItemView.info_type.setText("number2");
listItemView.info_type.setTextColor(Color.rgb(255, 174, 0));
}
listItemView.insert_time.setText("time ");
listItemView.content.setText("正文信息");
return convertView;
}
}
--------------------------------------------------------------------------------------------------
三、用listview设置dapter,并设置监听事件
NoticeAdapter noticeAdapter = new NoticeAdapter(this,listHandler);
itemsListView.setAdapter(noticeAdapter);
itemsListView.setOnItemClickListener(this);
private Handler listHandler = new Handler(){
public void handleMessage(Message msg) {
//在这个handler中要处理的事情,这个自己写啦
};
};
--------------------------------------------------------------------------------------------------
四、根据点击事情获取要处理的事情
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
System.out.println("点击位置"+arg2);
//这样就能获得listview中点击了那一项
}