1>实体类---即ListView中各个Item中填充的内容

package com.demo.cxc.compoundview.com.demo.cxc.entity;import java.text.SimpleDateFormat;
import java.util.Date;/*** Created by CXC on 15/4/14.*/
public class ToDoItem {private String task;private Date createdDate;//构造函数public ToDoItem(String task){this(task,new Date(java.lang.System.currentTimeMillis()));}public ToDoItem(String task,Date createdDate){this.task=task;this.createdDate=createdDate;}//getters && setterspublic String getTask() {return task;}public void setTask(String task) {this.task = task;}public Date getCreatedDate() {return createdDate;}public void setCreatedDate(Date createdDate) {this.createdDate = createdDate;}@Overridepublic String toString() {SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yy");String dateString =sdf.format(this.createdDate);return "("+dateString+") "+this.task;}
}

2>自定义Adapter类

package com.demo.cxc.compoundview.com.demo.cxc.adapter;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;import com.demo.cxc.compoundview.R;
import com.demo.cxc.compoundview.com.demo.cxc.entity.ToDoItem;import org.w3c.dom.Text;import java.text.SimpleDateFormat;
import java.util.List;/*** Created by CXC on 15/4/14.*/
public class ToDoItemAdapter extends ArrayAdapter<ToDoItem> {private int resource_id;public ToDoItemAdapter(Context context, int resource_id, List<ToDoItem> items) {super(context, resource_id, items);this.resource_id = resource_id;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {LinearLayout todoView;ToDoItem toDoItem=getItem(position);if(convertView==null){//不是一次更新,则填充一个新视图todoView=new LinearLayout(getContext());LayoutInflater layoutInflater=(LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);layoutInflater.inflate(resource_id,todoView,true);}else {//否则更新该视图todoView=(LinearLayout)convertView;}//得到对象的各个属性值TextView task_tv=(TextView)todoView.findViewById(R.id.task_tv);TextView date_tv=(TextView)todoView.findViewById(R.id.date_tv);//填充该Item 中各个View的内容task_tv.setText(toDoItem.getTask());date_tv.setText(new SimpleDateFormat("dd/MM/yy").format(toDoItem.getCreatedDate()));return todoView;}
}

3>MainActivity

3.1>布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity"><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"><EditTextandroid:id="@+id/new_item_et"android:layout_width="0dp"android:layout_height="wrap_content"android:hint="Please input what to do ..."android:layout_weight="1"/><Buttonandroid:id="@+id/commit_bt"android:text="Ok"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout><ListViewandroid:id="@+id/todo_list"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView></LinearLayout>

效果如图所示


3.2>代码如下

package com.demo.cxc.compoundview;import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;import com.demo.cxc.compoundview.com.demo.cxc.adapter.ToDoItemAdapter;
import com.demo.cxc.compoundview.com.demo.cxc.entity.ToDoItem;import java.util.ArrayList;
import java.util.List;public class MainActivity extends ActionBarActivity implements View.OnClickListener {private EditText new_item_et;private Button commit_bt;private ListView todo_list;private List<ToDoItem> toDoItemList;private ToDoItemAdapter toDoItemAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();}/*初始化控件,变量*/private void initViews() {new_item_et=(EditText)findViewById(R.id.new_item_et);commit_bt=(Button)findViewById(R.id.commit_bt);todo_list=(ListView)findViewById(R.id.todo_list);commit_bt.setOnClickListener(this);toDoItemList=new ArrayList<ToDoItem>();toDoItemAdapter=new ToDoItemAdapter(this,R.layout.todo_item,toDoItemList);//ListView注册Adaptertodo_list.setAdapter(toDoItemAdapter);}@Overrideprotected void onResume() {super.onResume();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}@Overridepublic void onClick(View v) {ToDoItem newItem=new ToDoItem(new_item_et.getText().toString());toDoItemList.add(0,newItem);toDoItemAdapter.notifyDataSetChanged();}
}

其中ListView中的每一个Item的布局todo_item.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="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/task_tv"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"/><TextViewandroid:id="@+id/date_tv"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>

Android 自定义Adapter以实现自定义填充ListView的Item相关推荐

  1. android 单选框 icon,Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解...

    标签: 对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法.看看各位童鞋在平时的工作中否都用 ...

  2. Android自定义Adapter的ListView的思路及代码

    Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下 width="650" height="200" align=&quo ...

  3. android 中自定义安装,Android开发中ListView自定义adapter的封装

    [引入] 我们一般编写listView的时候顺序是这样的: •需要展示的数据集List •为这个数据集编写一个ListView •为这个ListView编写一个Adapter,一般继承自BaseAda ...

  4. android笔试添加自定义服务,Android之Listview(item为单选题)自定义adapter,像考试时前面的10几道单选题的实现...

    用于展现重复性的东西,Listview比较好用,看了别人的自定义Adapter(item是EditText,能够很好地获取到每一个item的EditText值).又由于在做项目的需要,故特制了一个it ...

  5. Android入门第26天-在Android里自定义Adapter

    介绍 在上一篇"SimpleAdapter"章节中,我们看到了把:ListView和Listview内部详细页面进行分离的Adapter的设计手法. 可是,这个SimpleAdap ...

  6. android 自定义adapter

    Adapter是用来帮助填充数据的中间桥梁,比如通过它将数据填充到ListView, GridView, Gallery等,而android的adapter又有很多种(ArrayAdapter, Ba ...

  7. android自定义adapter(实现对按钮的监听)

    我们一般需要自定义adapter   这里就需要继承BaseAdapter adapter在MVC开发模式中,是控制层 baseAdapter  继承这个方法必须重写 四个方法 1.  getcont ...

  8. [原]Android之自定义Adapter

      在ListView中经常用到适配器Adapter, android提供的三种Adapter主要有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,Arr ...

  9. Android自定义ListView的Item无法响应OnItemClick的解决办法

    转: 如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就 ...

最新文章

  1. 设备树与驱动的关系_Linux I2C驱动竟然如此简单?手把手教你写i2c驱动
  2. 盘点CVPR 2019影响力最大的20篇论文
  3. #研发解决方案#智慧的太空桥管理智慧设备
  4. 快速排序及优化(Java实现)
  5. easyui combobox开启搜索自动完成功能
  6. 【转】论对东西的崇拜
  7. Windows Server 2008 IIS7.0 发布html和Asp.net网站
  8. 关于tomcat Post 数据参数的问题
  9. Java中看今天是星期几,礼拜几
  10. java statemachine_StateMachine 状态机机制深入解析
  11. Go语言的一些使用心得
  12. java texttospeech_TextToSpeech 文本自动朗读
  13. VBA变量和函数名中文拼音输入提示
  14. 数学最高奖菲尔兹奖得主加入华为!研究数学大一统理论,任正非曾说“国家若要强盛,数学是基础”...
  15. 将WordPress后台的open-sans字体加载源从Google Fonts换为360 CDN
  16. 第二章:EB编译环境Keil的配置(s32k144)
  17. Spring MVC之redirect、forward和普通跳转
  18. 8266+DS3231时钟之显示TM1638的使用【四】上
  19. 请做好 5 年内随时失业的准备
  20. OpenCV中HOG人检测以及Part Model latent SVM目标识别

热门文章

  1. BZOJ 3208: 花神的秒题计划Ⅰ
  2. dede织梦背景经常使用标签
  3. 面试和人生目标(转)
  4. javascript省市三层联动,修改
  5. loj #6235. 区间素数个数
  6. 一个小小的知识点,关于强制类型转换
  7. maven 指定jdk版本和编译版本.
  8. .net MVC 简单图片上传
  9. eclipse设置自定义快捷键
  10. 了解动态链接(六)—— 重定位表