Android 自定义Adapter以实现自定义填充ListView的Item
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相关推荐
- android 单选框 icon,Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解...
标签: 对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法.看看各位童鞋在平时的工作中否都用 ...
- Android自定义Adapter的ListView的思路及代码
Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下 width="650" height="200" align=&quo ...
- android 中自定义安装,Android开发中ListView自定义adapter的封装
[引入] 我们一般编写listView的时候顺序是这样的: •需要展示的数据集List •为这个数据集编写一个ListView •为这个ListView编写一个Adapter,一般继承自BaseAda ...
- android笔试添加自定义服务,Android之Listview(item为单选题)自定义adapter,像考试时前面的10几道单选题的实现...
用于展现重复性的东西,Listview比较好用,看了别人的自定义Adapter(item是EditText,能够很好地获取到每一个item的EditText值).又由于在做项目的需要,故特制了一个it ...
- Android入门第26天-在Android里自定义Adapter
介绍 在上一篇"SimpleAdapter"章节中,我们看到了把:ListView和Listview内部详细页面进行分离的Adapter的设计手法. 可是,这个SimpleAdap ...
- android 自定义adapter
Adapter是用来帮助填充数据的中间桥梁,比如通过它将数据填充到ListView, GridView, Gallery等,而android的adapter又有很多种(ArrayAdapter, Ba ...
- android自定义adapter(实现对按钮的监听)
我们一般需要自定义adapter 这里就需要继承BaseAdapter adapter在MVC开发模式中,是控制层 baseAdapter 继承这个方法必须重写 四个方法 1. getcont ...
- [原]Android之自定义Adapter
在ListView中经常用到适配器Adapter, android提供的三种Adapter主要有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,Arr ...
- Android自定义ListView的Item无法响应OnItemClick的解决办法
转: 如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就 ...
最新文章
- 设备树与驱动的关系_Linux I2C驱动竟然如此简单?手把手教你写i2c驱动
- 盘点CVPR 2019影响力最大的20篇论文
- #研发解决方案#智慧的太空桥管理智慧设备
- 快速排序及优化(Java实现)
- easyui combobox开启搜索自动完成功能
- 【转】论对东西的崇拜
- Windows Server 2008 IIS7.0 发布html和Asp.net网站
- 关于tomcat Post 数据参数的问题
- Java中看今天是星期几,礼拜几
- java statemachine_StateMachine 状态机机制深入解析
- Go语言的一些使用心得
- java texttospeech_TextToSpeech 文本自动朗读
- VBA变量和函数名中文拼音输入提示
- 数学最高奖菲尔兹奖得主加入华为!研究数学大一统理论,任正非曾说“国家若要强盛,数学是基础”...
- 将WordPress后台的open-sans字体加载源从Google Fonts换为360 CDN
- 第二章:EB编译环境Keil的配置(s32k144)
- Spring MVC之redirect、forward和普通跳转
- 8266+DS3231时钟之显示TM1638的使用【四】上
- 请做好 5 年内随时失业的准备
- OpenCV中HOG人检测以及Part Model latent SVM目标识别