自己今年整理出来的Adapter类,已经实现:分组列表->图片列表节点、时间节点、链接节点->列表项目的编辑:文字、选择项、地理位置选择(高德地图)、图片列表选择。现在在我的Android项目中正常在用。今天只发对应的Adapter类,其中使用的其他类,忙完这几天,再抽时间整理一下,发个Demo出来。。
package com.cssg.android;
import java.util.ArrayList;
import com.cssg.android.utils.Utils;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
/**
* 分组列表显示适配器
* 支持加载更多按钮
* 2015-10-22 14:57 何洪滔 增加未加载数据时的提示
* 2016-02-25 15:36 何洪滔 添加设置分组间隔背景方法,包括设置背景图片、资源或者颜色
* 2016-06-28 11:56 何洪滔 增加视图缓存方法
* @author cubar
*
*/
public class GroupAdapter extends BaseAdapter {
private final String TAG = "GroupAdapter";
/**
* 数据列表
*/
private ArrayList<Object> data;
/**
* 布局管理器
*/
protected LayoutInflater inflater = null;
/**
* 是否显示加载更多数据按钮
*/
protected boolean _Bln_HasLoadMoreButton = false;
/**
* 更多按钮文字
* 默认:加载更多
*/
protected String _Str_MoreButton = "加载更多";
/**
* 控件上下文
*/
private Context context;
/**
* 获取控件的上下文
* @return
*/
protected Context getContext(){
return context;
}
/**
* 未加载数据前的提示信息
*/
private String _Str_MessageBeforLoad = "暂未加载数据";
/**
* 没有任何数据的提示信息
*/
private String _Str_MessageNoData = "没有任何数据";
/**
* 设置未加载数据前的提示信息
* @param message
* 提示信息
*/
public void setMessageBeforLoad(String message){
_Str_MessageBeforLoad = message;
if(message == null || message == ""){
_Str_MessageBeforLoad = "暂未加载数据";
}
}
/**
* 设置没有数据时的提示信息
* @param message
*/
public void setMessageNoData(String message){
_Str_MessageNoData = message;
if(message == null || message == ""){
_Str_MessageNoData = "没有任何数据";
}
}
/**
* 当前是否已经加载数据
*/
private boolean _Bln_IsNowLoadData = false;
/**
* 设置当前是否已经加载数据
* 用于控制显示列表数据为空时的提示信息
* @param isload
*/
public void setIsNowLoadData(boolean isload){
_Bln_IsNowLoadData = isload;
}
public GroupAdapter(Context context, ArrayList<Object> items){
this.context = context;
data = items;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(data == null){
data = new ArrayList<Object>();
}
}
/**
* 缓存视图,2016-07-28 11:56 何洪滔 添加
* @param obj 视图对应的数据对象
* @param view 要缓存的视图
*/
protected void cacheView(Object obj, View view){
if(obj == null || view == null){
return;
}
}
//TODO 2016-02-25 何洪滔 添加设置分组间隔背景方法
private final int GROUP_BACKGROUND_TYPE_NONE = 102;
private final int GROUP_BACKGROUND_TYPE_COLOR = 103;
private final int GROUP_BACKGROUND_TYPE_DRAWABLE = 104;
private final int GROUP_BACKGROUND_TYPE_RESURCE = 105;
/**
* 分组背景类型
*/
private int GROUP_BACKGROUND_TYPE = GROUP_BACKGROUND_TYPE_NONE;
private int groupBackgroundColor = 0;
private Drawable groupBackgroundDrawable = null;
private int groupBackgroundResurceId = 0;
public void setGroupSplitBackgroundColor(int color){
GROUP_BACKGROUND_TYPE = GROUP_BACKGROUND_TYPE_COLOR;
groupBackgroundColor = color;
}
public void setGroupSplitBackgroundDrawable(Drawable drawable){
GROUP_BACKGROUND_TYPE = GROUP_BACKGROUND_TYPE_DRAWABLE;
groupBackgroundDrawable = drawable;
}
public void setGroupSplitBackgroundResurce(int resurceId){
GROUP_BACKGROUND_TYPE = GROUP_BACKGROUND_TYPE_RESURCE;
groupBackgroundResurceId = resurceId;
}
/**
* 生成一个分组间隔对象
* @return
*/
public static Object createGroupSplit(String title){
return new GroupListViewSplit(title);
}
/**
* 获取获取更多按钮按下事件
* @return
*/
public View.OnClickListener getMoreOnClickListener(){
return null;
}
/**
* 获取指定位置的数据对象
* @param index
* @return
*/
public Object getItemAt(int index){
if(index >=0 && index < data.size()){
return data.get(index);
}
return null;
}
/**
* 更新指定位置的数据对象
* @param index
* @param obj
*/
public void setItemAt(int index, Object obj){
if(index >=0 && index < data.size()){
data.remove(index);
data.add(index, obj);
}
}
/**
* 当前位置是否是分组间隔
* @param position
* 要判断的位置索引
* @return
*/
public boolean isGroupPosition(int position){
Object obj = this.getItemAt(position);
if(obj == null){
return false;
}
if(obj.getClass().equals(GroupListViewSplit.class)){
return true;
}
return false;
}
/**
* 当前是不是最后一页
* @return
*/
protected boolean isEndPage(){
return _Int_NowPage >= _Int_TotalPage;
}
protected int _Int_NowPage = 1;
/**
* 获取当前的页数
* @return
*/
public int getNowPage(){
return _Int_NowPage;
}
/**
* 设置当前的页数
* @param nowPage
*/
public void setNowPage(int nowPage){
_Int_NowPage = nowPage;
}
protected int _Int_TotalPage = 1;
/**
* 获取当前总页数
* @return
*/
public int getTotalPage(){
return _Int_TotalPage;
}
/**
* 设置当前总页数
* @param totalPage
*/
public void setTotalPage(int totalPage){
_Int_TotalPage = totalPage;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if(data.size() == 0){
//数据列表为空时,要显示相关提示信息
return 1;
}
if(_Bln_HasLoadMoreButton){
return data.size() + 1;
}
return data.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
//如果列表数据为空,则显示提示信息
if(data.size() == 0){
if(vi == null || vi.findViewById(R.id.tv_comp_listview_no_data_info) == null){
vi = inflater.inflate(R.layout.comp_listview_no_data_info, null);
}
TextView tvInfo = (TextView)vi.findViewById(R.id.tv_comp_listview_no_data_info);
int height = Utils.getDisplayHeight(getContext());
if(parent != null){
height = parent.getMeasuredHeight();
}
tvInfo.setHeight(height);
//tvInfo.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams.MATCH_PARENT, android.widget.RelativeLayout.LayoutParams.MATCH_PARENT));
if(_Bln_IsNowLoadData){//如果已经加载了数据,则显示没有数据的提示信息
tvInfo.setText(_Str_MessageNoData);
}else{
tvInfo.setText(_Str_MessageBeforLoad);
}
return vi;
}
//显示最后的加载更多按钮
if(_Bln_HasLoadMoreButton){
if(position == data.size()){
//最后的显示为加载更多按钮
if(vi == null || convertView.findViewById(com.cssg.android.R.id.comp_listview_more_button) == null){
vi = inflater.inflate(com.cssg.android.R.layout.comp_listview_more, null);
}
Button btn = (Button) vi.findViewById(com.cssg.android.R.id.comp_listview_more_button);
if(_Str_MoreButton != ""){
btn.setText(_Str_MoreButton);
}
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO 加载更多按钮按下
if(getMoreOnClickListener() != null){
_Int_NowPage ++;
if(isEndPage()){
_Int_NowPage --;
Toast.makeText(getContext(), "已经达到最后一页", Toast.LENGTH_SHORT).show();
return;
}
Button btn = (Button)view;
btn.setEnabled(false);
btn.setText("正在加载数据…");
getMoreOnClickListener().onClick(view);
}
}
});
if(isEndPage()){
//btn.setEnabled(false);
}else{
btn.setEnabled(true);
}
return vi;
}
}
Object obj = data.get(position);
if(obj == null){
return null;
}
if(obj.getClass().equals(GroupListViewSplit.class)){//当前节点是分组间隔
vi = this.fillViewWithData(obj, convertView);
}else{
vi = null;
}
return vi;
}
/**
* 填充数据到显示
* @param obj
* @param convertView
*/
protected View fillViewWithData(Object obj, View convertView){
View vi = null;
try{
if (vi == null || convertView.findViewById(R.id.comp_listview_group_split_title) == null){
vi = inflater.inflate(R.layout.comp_listview_group_split, null);
}
GroupListViewSplit s = (GroupListViewSplit)obj;
TextView tvTitle = (TextView)vi.findViewById(R.id.comp_listview_group_split_title);
if(s.getTitle() != null && s.getTitle() != ""){
tvTitle.setText(s.getTitle());
tvTitle.setVisibility(View.VISIBLE);
//修改高度为22dp
vi.setLayoutParams(new android.widget.AbsListView.LayoutParams(android.widget.AbsListView.LayoutParams.MATCH_PARENT, (int) (22 * Utils.getSystemDensity(getContext()))));
}
switch(GROUP_BACKGROUND_TYPE){
case GROUP_BACKGROUND_TYPE_COLOR:
tvTitle.setBackgroundColor(groupBackgroundColor);
vi.setBackgroundColor(groupBackgroundColor);
break;
case GROUP_BACKGROUND_TYPE_DRAWABLE:
tvTitle.setBackground(groupBackgroundDrawable);
vi.setBackground(groupBackgroundDrawable);
break;
case GROUP_BACKGROUND_TYPE_RESURCE:
tvTitle.setBackgroundResource(groupBackgroundResurceId);
vi.setBackgroundResource(groupBackgroundResurceId);
break;
}
}catch(Exception e){
Log.e(TAG, "填充数据失败");
vi = null;
}
return vi;
}
}
第二个类:
package com.cssg.android;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import com.cssg.android.utils.DateTimePickDialogUtil;
import com.cssg.android.utils.ImageLoader;
import com.cssg.android.utils.Utils;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TextView;
/**
* 各种节点类型集合适配器
* 包括:日期节点,图片列表节点,链接节点
* 2015-10-03 15:42 何洪滔 增加图片节点
* 2015-10-05 10:23 何洪滔 增加图片列表节点
* 2015-10-07 15:58 何洪滔 增加链接节点
* 2016-02-24 22:37 何洪滔 增加链接节点的生成方法
* 2016-06-02 15:02 何洪滔 增加链接节点的生成方法
* @author cubar
*
*/
public class UtilsAdapter extends GroupAdapter {
protected Context _context;
/**
* 图片加载器
*/
private ImageLoader imageLoader;
public UtilsAdapter(Context context, ArrayList<Object> items) {
super(context, items);
// TODO Auto-generated constructor stub
_context = context;
imageLoader = new ImageLoader(context);
}
/**
* 获取当前设置的日期选择回调接口
* @return
*/
protected DateTimePickDialogUtil.OnDateTimeSelected getOnDateTimeSelectedInterface(){
return null;
}
/**
* 获取日期节点数据对象
* @param date
* 日期节点数据接口
* @return
*/
public Object createDateViewData(DateView date){
if(date == null){
return null;
}
return new DateViewClass(date);
}
/**
* 创建图片节点数据对象
* @param imageview
* 图片节点数据接口
* @return
*/
public Object createImageViewData(ImageView imageview){
if(imageview == null){
return null;
}
return new ImageViewClass(imageview);
}
/**
* 创建链接节点数据对象
* @param linkView
* 链接节点数据接口
* @return
*/
public Object createLinkViewData(LinkView linkView){
if(linkView == null){
return null;
}
return new LinkViewClass(linkView);
}
/**
* 创建链接节点数据对象
* @param title 显示的标题
* @param summary 显示的说明文字
* @param args 参数
* @param listener 点击事件
* @return
*/
public Object createLinkViewData(String title, String summary, String args, View.OnClickListener listener){
return new LinkViewClass(title, summary, args, listener);
}
/**
* 创建链接节点数据对象
* @param title 显示的标题
* @param summary 显示的说明文字
* @param args 参数
* @param activity 调用的activity
* @param pkg 要启动的activity所在的包
* @param activityFullName 要启动的activity的名称,包含包名称
* @param requestCode 需要回调的参数,0则不需要回调
* @return
*/
public Object createLinkViewData(String title, String summary, String args, final Activity activity,final String pkg, final String activityFullName, final int requestCode){
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setComponent(new ComponentName(pkg, activityFullName));
intent.setAction(Intent.ACTION_VIEW);
if(requestCode < 0){
activity.startActivity(intent);
}else{
activity.startActivityForResult(intent, requestCode);
}
}
};
return new LinkViewClass(title, summary, args, listener);
}
/**
* 创建链接节点数据对象
* @param title 显示的标题
* @param summary 显示的说明文字
* @param args 参数
* @param context 调用的context
* @param pkg 要启动的activity所在的包
* @param activityFullName 要启动的activity的名称,包含包名称
* @return
*/
public Object createLinkViewData(String title, String summary, String args, final Context context,final String pkg, final String activityFullName){
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setComponent(new ComponentName(pkg, activityFullName));
intent.setAction(Intent.ACTION_VIEW);
context.startActivity(intent);
}
};
return new LinkViewClass(title, summary, args, listener);
}
/**
* 创建链接节点数据对象
* @param title 显示的标题
* @param summary 显示的说明文字
* @param args 参数
* @param context 调用的context
* @param cls 要链接的启动Activity
* @return
*/
public Object createLinkViewData(String title, String summary, String args, final Context context, final Class<?> cls){
return createLinkViewData(title, summary, args, context, cls.getPackage().getName(), cls.getName());
}
/**
* 创建链接节点数据对象
* @param title 显示的标题
* @param summary 显示的说明文字
* @param args 参数
* @param activity 调用的activity
* @param cls 要链接的启动Activity
* @param requestCode 需要回调的参数,0则不需要回调
* @return
*/
public Object createLinkViewData(String title, String summary, String args, Activity activity, Class<?> cls, int requestCode){
return createLinkViewData(title, summary, args, activity, cls.getPackage().getName(), cls.getName(), requestCode);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
vi = super.getView(position, convertView, parent);
if(vi == null){
Object obj = getItemAt(position);
if(obj == null){
return null;
}
if(obj.getClass().equals(DateViewClass.class)){//当前节点是时间数据节点
final DateViewClass d = (DateViewClass)obj;
vi = inflater.inflate(R.layout.comp_listview_item_data_view, null);
setDateView(vi, d.getSelectedDate());
//点击选择日期事件
vi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
// TODO Auto-generated method stub
Date dtm = d.getSelectedDate();
if(dtm == null){
dtm = new Date();
}
DateTimePickDialogUtil util = new DateTimePickDialogUtil(getContext(), inflater, dtm);
util.dateTimePicKDialog(new DateTimePickDialogUtil.OnDateTimeSelected() {
@Override
public void OnSelected(final Date date) {
// TODO Auto-generated method stub
if(getOnDateTimeSelectedInterface() != null){
getOnDateTimeSelectedInterface().OnSelected(date);
}
setDateView(view, date);
setItemAt(position, new DateViewClass(new DateView(){
@Override
public Date getSelectedDate() {
// TODO Auto-generated method stub
return date;
}}));
}
});
}
});
}else if(obj.getClass().equals(ImageViewClass.class)){
//当前节点是图片节点
int w, h;//图片显示的宽度
//计算图片大小
int sw = Utils.getDisplayWidth(getContext());
ImageViewClass ivc = (ImageViewClass)obj;
w = (int) ((sw - (2 + ivc.getImageCount() - 1) * 10 * Utils.getSystemDensity(getContext())) / ivc.getImageCount());
h = w;
vi = inflater.inflate(R.layout.comp_listview_item_images_view, null);
LinearLayout ll = (LinearLayout)vi.findViewById(R.id.ll_comp_listview_item_images_view);
for(int i = 0 ; i < ivc.getImageUrl().length; i ++){
if(i > 0){//增加图片间隔
android.view.View sv = new android.view.View(getContext());
sv.setLayoutParams(new LayoutParams((int) (10 * Utils.getSystemDensity(getContext())),LayoutParams.MATCH_PARENT));
ll.addView(sv);
}
android.widget.ImageView iv = new android.widget.ImageView(getContext());
iv.setLayoutParams(new LayoutParams(w, h));
ll.addView(iv);
imageLoader.DisplayImage(ivc.getImageUrl()[i], iv);
}
}else if(obj.getClass().equals(LinkViewClass.class)){
//当前节点是链接节点
vi = inflater.inflate(R.layout.comp_listview_item_link_view, null);
LinkViewClass lvc = (LinkViewClass)obj;
TextView tvTitle = (TextView)vi.findViewById(R.id.tv_comp_listview_item_link_view_title);
TextView tvSummary = (TextView)vi.findViewById(R.id.tv_comp_listview_item_link_view_summary);
tvTitle.setText(lvc.getText());
tvSummary.setText(lvc.getTextSummary());
if(lvc.getOnClickListener() != null){
vi.setTag(lvc.getArgs());
vi.setOnClickListener(lvc.getOnClickListener());
}
}else {
vi = null;
}
cacheView(obj, vi);
}
return vi;
}
private void setDateView(View view, Date date){
if(date == null){
date = new Date();
}
Calendar c = Calendar.getInstance();
c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
c.setTime(date);
//mYear = String.valueOf(c.get(Calendar.YEAR)); // 获取当前年份
//mMonth = String.valueOf(c.get(Calendar.MONTH) + 1);// 获取当前月份
//mDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));// 获取当前月份的日期号码
//return mYear + "年" + mMonth + "月" + mDay+"日"+"/星期"+mWay;
TextView tvY = (TextView)view.findViewById(R.id.tv_comp_listview_item_date_view_year);
tvY.setText(String.valueOf(c.get(Calendar.YEAR)));
TextView tvM = (TextView)view.findViewById(R.id.tv_comp_listview_item_date_view_month);
tvM.setText(String.valueOf(c.get(Calendar.MONTH) + 1));
TextView tvD = (TextView)view.findViewById(R.id.tv_comp_listview_item_date_view_day);
tvD.setText(String.valueOf(c.get(Calendar.DAY_OF_MONTH)));
TextView tvH = (TextView)view.findViewById(R.id.tv_comp_listview_item_date_view_hour);
tvH.setText(String.valueOf(c.get(Calendar.HOUR_OF_DAY)));
TextView tvMi = (TextView)view.findViewById(R.id.tv_comp_listview_item_date_view_minite);
tvMi.setText(String.valueOf(c.get(Calendar.MINUTE)));
//获取星期
String mWay = String.valueOf(c.get(Calendar.DAY_OF_WEEK));
if("1".equals(mWay)){
mWay ="天";
}else if("2".equals(mWay)){
mWay ="一";
}else if("3".equals(mWay)){
mWay ="二";
}else if("4".equals(mWay)){
mWay ="三";
}else if("5".equals(mWay)){
mWay ="四";
}else if("6".equals(mWay)){
mWay ="五";
}else if("7".equals(mWay)){
mWay ="六";
}
TextView tvWD = (TextView)view.findViewById(R.id.tv_comp_listview_item_date_view_weekday);
tvWD.setText("星期" + mWay);
}
//TODO 相关列表节点接口定义
//TODO 日期节点段接口定义
/**
* 日期节点数据接口
* @author cubar
*
*/
public interface DateView{
/**
* 获取当前选择的时间
* @return
*/
Date getSelectedDate();
}
/**
* 日期节点内部类
* @author cubar
*
*/
protected class DateViewClass{
private DateView i;
/**
* 获取当前选择的时间
* @return
*/
Date getSelectedDate(){
return i.getSelectedDate();
}
public DateViewClass(DateView dv){
i = dv;
}
}
//TODO 图片节点接口定义
/**
* 图片节点数据接口
* 仅显示横向列表
* @author cubar
*
*/
public interface ImageView{
/**
* 图片地址列表分隔符
*/
public final static String IMAGE_SPLIT = ";";
/**
* 获取当前图片的地址列表
* @return
*/
String[] getImageUrls();
/**
* 获取当前要显示的图片数量
* @return
*/
int getImageCount();
}
/**
* 图片节点数据内部类
* @author cubar
*
*/
protected class ImageViewClass{
private ImageView v;
/**
* 获取当前图片的地址
* @return
*/
public String[] getImageUrl(){
if(v == null){
return null;
}
return v.getImageUrls();
}
/**
* 获取当前要显示的图片数量
* @return
*/
int getImageCount(){
if(v == null){
return 0;
}
return v.getImageCount();
}
public ImageViewClass(ImageView iv){
v = iv;
}
}
//TODO 链接节点数据接口
/**
* 链接节点数据接口
* @author cubar
*
*/
public interface LinkView{
/**
* 获取链接主文字
* @return
*/
String getText();
/**
* 获取说明文字
* @return
*/
String getTextSummary();
/**
* 获取参数
* @return
*/
String getArgs();
/**
* 获取点击事件
* @return
*/
View.OnClickListener getOnClickListener();
}
/**
* 链接节点数据内部类
* @author cubar
*
*/
protected class LinkViewClass{
private LinkView lv;
private String text;
private String summary;
private String args;
private View.OnClickListener listener;
/**
* 获取链接主文字
* @return
*/
String getText(){
if(lv != null){
return lv.getText();
}
return text;
}
/**
* 获取说明文字
* @return
*/
String getTextSummary(){
if(lv != null){
return lv.getTextSummary();
}
return summary;
}
/**
* 获取参数
* @return
*/
String getArgs(){
if(lv != null){
return lv.getArgs();
}
return args;
}
/**
* 获取点击事件
* @return
*/
View.OnClickListener getOnClickListener(){
if(lv != null){
return lv.getOnClickListener();
}
return listener;
}
public LinkViewClass(LinkView linkView){
lv = linkView;
}
public LinkViewClass(String txt, String smy, String arg, View.OnClickListener lstner){
text = txt;
summary = smy;
args = arg;
listener = lstner;
lv = null;
}
}
}
第三个类
package com.cssg.android;
import java.util.ArrayList;
import java.util.Date;
import com.cssg.android.photo.ImageSelectViewActivity;
import com.cssg.android.utils.DatePickDialogUtil;
import com.cssg.android.utils.Utils;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.Toast;
import android.widget.TextView;
/**
* 支持列表项目内容编辑的集合适配器
* 2016-07-28 11:42 何洪滔 增加新版本的日期节点功能和相关方法
* 2016-07-29 20:23 何洪滔 增加图片选择节点功能和相关方法,此方法需要使用EditAdapter(Activity activity, ArrayList<Object> items)进行初始化
* 2016-08-30 19:23 何洪滔 增加跳转Activity选择节点方法
*
* @author cubar
*
*/
@SuppressWarnings("deprecation")
public class EditAdapter extends UtilsAdapter {
private Activity _activity;
/**
* 是否能编辑标识
*/
private boolean _Bln_Editable = true;
/**
* 获取是否能编辑
* @return
*/
protected boolean getEditable(){
return _Bln_Editable;
}
/**
* 设置是否能编辑
* @param enable
*/
public void setEditable(boolean enable){
_Bln_Editable = enable;
}
public EditAdapter(Context context, ArrayList<Object> items) {
super(context, items);
// TODO Auto-generated constructor stub
}
public EditAdapter(Activity activity, ArrayList<Object> items){
super(activity, items);
_activity = activity;
}
/**
* 创建可编辑链接项
*
* @param title
* 标题
* @param content
* 内容
* @param mask
* 提示水印
* @return
*/
public Object createEditLinkView(String title, String content, String mask) {
return createEditLinkView(title, content, mask, false);
}
/**
* 创建可编辑链接项
*
* @param title
* 标题
* @param content
* 内容
* @param mask
* 提示水印
* @param newedit
* 是否在新窗口中编辑
* @return
*/
public Object createEditLinkView(String title, String content, String mask,
boolean newedit) {
return new EditLinkView(title, content, mask, newedit);
}
/**
* 创建可编辑链接项
*
* @param title
* 标题
* @param content
* 内容
* @param mask
* 提示水印
* @param newedit
* 是否在新窗口中编辑
* @param editable
* 是否可编辑
* @return
*/
public Object createEditLinkView(String title, String content, String mask,
boolean newedit, boolean editable) {
EditLinkView res = new EditLinkView(title, content, mask, newedit);
res.setClickable(editable);
return res;
}
/**
* 创建可编辑链接项
*
* @param title
* 标题
* @param content
* 内容
* @param mask
* 提示水印
* @param newedit
* 是否在新窗口中编辑
* @param editable
* 是否可编辑
* @param set
* 赋值接口
* @return
*/
public Object createEditLinkView(String title, String content, String mask,
boolean newedit, boolean editable, OnSetDone set) {
EditLinkView res = new EditLinkView(title, content, mask, newedit, set);
res.setClickable(editable);
return res;
}
/**
* 创建按钮项
*
* @param text
* 按钮名称
* @param listener
* 点击事件
* @return
*/
public Object createButtonView(String text, View.OnClickListener listener) {
return new ButtonView(text, listener);
}
/**
* 创建列表选择顶
*
* @param title
* 标题
* @param items
* 选择内容
* @param completed
* 选择完成回调接口
* @return
*/
public Object createSelectView(View root, String title, ArrayList<? extends ISelectItem> items,
OnSelectCompleted completed) {
return createSelectView(root, title, items, "", completed);
}
/**
* 创建列表选择顶
*
* @param title
* 标题
* @param items
* 选择内容
* @param selectId
* 默认选择的值
* @param completed
* 选择完成回调接口
* @return
*/
public Object createSelectView(View root, String title, ArrayList<? extends ISelectItem> items,
String selectId, OnSelectCompleted completed) {
SelectView view = new SelectView(title, items, selectId, completed);
view.setRootView(root);
return view;
}
/**
* 创建列表选择顶
* @param activity 上下文视图
* @param pkg 要启动的视图所属包名
* @param compname 组件名
* @param resultCode 返回标识
* @param title 标题
* @param vlaue 要显示的内容
* @param mask 提示信息
* @param argName 跳转参数名称
* @param args 参数
* @return
*/
public Object createSelectView(Activity activity, String pkg, String compname, int resultCode, String title, String value, String mask, String argName, String args){
SelectView view = new SelectView(title, null, "", null);
view.setActivity(activity);
view.setPakageName(pkg);
view.setComponentName(compname);
view.setResultCode(resultCode);
view.setArgName(argName);
view.setArgs(args);
view.setMask(mask);
view.setValue(value);
return view;
}
/**
* 获取日期节点数据对象
*
* @param title
* 标题
* @param date
* 日期值
* @param completed
* 选择完成回调接口
* @return
*/
public Object createDateViewData(String title, Date date,
OnDateSelectCompleted completed) {
return new DateViewV2(title, date, completed);
}
/**
* 获取图片选择节点数据对象,使用此方法,需要Activity实现On
*
* @param title
* 标题
* @param images
* 已经选择的图片列表,使用“;”间隔
* @param completed
* 选择完成回调接口
* @return
*/
public Object createImageSelectView(String title, String images, ImageGalleryAdapter adapter,
OnImageSelectCompleted completed) {
return new ImageSelectView(title, images, adapter, completed);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = super.getView(position, convertView, parent);
if (view != null) {
return view;
}
Object obj = this.getItemAt(position);
if (obj != null) {
if (obj.getClass().equals(EditLinkView.class)) {
final EditLinkView cls = (EditLinkView) obj;
TextWatcher watcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
// TODO Auto-generated method stub
// Log.i("EditAdapter", "编辑改变:" + s);
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
// TODO Auto-generated method stub
// Log.i("EditAdapter", "编辑改变开始:" + s);
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
// Log.i("EditAdapter", "编辑改变结束:" + s.toString());
if (cls.getOnSetDone() != null) {
cls.getOnSetDone().Set(s.toString());
}
cls.setContent(s.toString());
}
};
view = this.inflater.inflate(R.layout.comp_listview_editlink,
null);
TextView tvTitle = (TextView) view.findViewById(R.id.tv_title);
tvTitle.setText(cls.getTitle());
TextView tvContent = (TextView) view
.findViewById(R.id.tv_content);
if(cls.getContent() != "" && cls.getContent() != null){
tvContent.setText(cls.getContent());
}else{
tvContent.setText(cls.getMask());
}
EditText etContent = (EditText) view
.findViewById(R.id.et_content);
etContent.setText(cls.getContent());
etContent.setHint(cls.getMask());
etContent.addTextChangedListener(watcher);
android.widget.ImageView iv = (android.widget.ImageView) view
.findViewById(R.id.iv_linksign);
if(!getEditable()){
etContent.setVisibility(View.INVISIBLE);
tvContent.setVisibility(View.VISIBLE);
iv.setVisibility(View.INVISIBLE);
}else{
if (!cls.getClickable()) {
// 不支持点击事件,只显示TextView
etContent.setVisibility(View.INVISIBLE);
tvContent.setVisibility(View.VISIBLE);
iv.setVisibility(View.INVISIBLE);
} else {
if (cls.getIsNewEditAct()) {
iv.setVisibility(View.VISIBLE);
// 需要跳转到编辑界面
etContent.setVisibility(View.INVISIBLE);
tvContent.setVisibility(View.VISIBLE);
// 添加跳转事件
} else {
iv.setVisibility(View.INVISIBLE);
// 直接在本界面编辑
etContent.setVisibility(View.VISIBLE);
tvContent.setVisibility(View.INVISIBLE);
}
}
}
} else if (obj.getClass().equals(ButtonView.class)) {
// 按钮项
ButtonView bv = (ButtonView) obj;
view = inflater.inflate(R.layout.comp_listview_button, null);
Button btn = (Button) view.findViewById(R.id.btn_Button);
btn.setText(bv.getButtonText());
btn.setOnClickListener(bv.getListener());
if(!getEditable()){
btn.setEnabled(getEditable());
}
} else if (obj.getClass().equals(SelectView.class)) {
// 选择项
final SelectView sv = (SelectView) obj;
view = this.inflater.inflate(R.layout.comp_listview_select,
null);
TextView tvTitle = (TextView) view.findViewById(R.id.tv_title);
tvTitle.setText(sv.getTitle());
final TextView tvContent = (TextView) view
.findViewById(R.id.tv_content);
tvContent.setText(sv.getContent());
// android.widget.ImageView iv =
// (android.widget.ImageView)view.findViewById(R.id.iv_linksign);
if(getEditable()){
// 添加点击事件
tvContent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(sv.getComponentName() == "" || sv.getComponentName() == null){
// 实例化SelectPicPopupWindow
SelectItemPopupWindow menuWindow = new SelectItemPopupWindow(
getContext(), sv.getSelects(),
new OnSelectCompleted() {
@Override
public void OnSelect(ISelectItem si) {
// TODO Auto-generated method stub
tvContent.setText(si.getName());
if (sv.getSelectCompleted() != null) {
sv.getSelectCompleted().OnSelect(si);
}
}
});
// 显示窗口
// menuWindow.showAtLocation(getContext().findViewById(R.id.ll_content),
// Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
// 设置layout在PopupWindow中显示的位置
menuWindow.showAtLocation(sv.getRootView(),
Gravity.CENTER | Gravity.BOTTOM, 0, 0);
}else{
if(sv.getActivity() != null){
//跳转至指定的Activity
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setComponent(new ComponentName(sv.getPakageName(), sv.getComponentName()));
Bundle bund = new Bundle();
bund.putString(sv.getArgName(), sv.getArgs());
intent.putExtras(bund);
sv.getActivity().startActivityForResult(intent, sv.getResultCode());
}
}
}
});
}
} else if (obj.getClass().equals(DateViewV2.class)) {// 当前接口是日期节点
final DateViewV2 d = (DateViewV2) obj;
view = inflater.inflate(R.layout.comp_listview_date, null);
// setDateView(view, d.getDate());
TextView tvTitle = (TextView) view.findViewById(R.id.tv_title);
tvTitle.setText(d.getTitle());
/*
* Calendar c = Calendar.getInstance();
* c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
* c.setTime(d.getDate()); //mYear =
* String.valueOf(c.get(Calendar.YEAR)); // 获取当前年份 //mMonth =
* String.valueOf(c.get(Calendar.MONTH) + 1);// 获取当前月份 //mDay =
* String.valueOf(c.get(Calendar.DAY_OF_MONTH));// 获取当前月份的日期号码
* //return mYear + "年" + mMonth + "月" + mDay+"日"+"/星期"+mWay;
* String str = String.valueOf(c.get(Calendar.YEAR)) + "年" +
* String.valueOf(c.get(Calendar.MONTH) + 1) + "月" +
* String.valueOf(c.get(Calendar.DAY_OF_MONTH)) + "日";
*/
final TextView tvContent = (TextView) view
.findViewById(R.id.tv_content);
tvContent.setText(Utils.stringFromDate("yyyy年MM月dd日",
d.getDate()));
if(getEditable()){
// 点击选择日期事件
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
// TODO Auto-generated method stub
Date dtm = d.getDate();
if (dtm == null) {
dtm = new Date();
}
DatePickDialogUtil util = new DatePickDialogUtil(
getContext(), inflater, dtm);
util.dateTimePicKDialog(new DatePickDialogUtil.OnDateTimeSelected() {
@Override
public void OnSelected(final Date date) {
// TODO Auto-generated method stub
if (d.getSelectCompleted() != null) {
d.getSelectCompleted().OnDateSelect(date);
}
// setDateView(view, date);
tvContent.setText(Utils.stringFromDate(
"yyyy年MM月dd日", date));
d.setDate(date);
}
});
}
});
}
} else if (obj.getClass().equals(ImageSelectView.class)) {
// 为图片选择项
final ImageSelectView cls = (ImageSelectView) obj;
view = inflater.inflate(R.layout.comp_listview_imageselect,
null);
TextView tvTitle = (TextView) view.findViewById(R.id.tv_title);
tvTitle.setText(cls.getTitle());
TextView tvContent = (TextView) view
.findViewById(R.id.tv_content);
tvContent.setText("点击选择图片");
Gallery gl = (Gallery) view.findViewById(R.id.gly_images);
gl.setAdapter(cls.getAdapter());
if (cls.getImages() == null || cls.getImages().length() < 1) {
tvContent.setVisibility(View.VISIBLE);
gl.setVisibility(View.INVISIBLE);
} else {
tvContent.setVisibility(View.INVISIBLE);
gl.setVisibility(View.VISIBLE);
}
_listImageSelectHoler.add(new ImageSelectHolder(tvContent, gl, cls));
if(getEditable()){
// 项目的点击事件
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(_activity != null){
Intent intent = new Intent();
//intent.setComponent(new ComponentName("com.cssg.android", ImageSelectViewActivity.class.getName()));
intent.setClass(_context, ImageSelectViewActivity.class);
Bundle bund = new Bundle();
bund.putString(ImageSelectViewActivity.STR_ARG_IMAGES, cls.getImages());
intent.putExtras(bund);
_activity.startActivityForResult(intent, ImageSelectViewActivity.RESULT_BACK_SIGN);
}else{
Toast.makeText(_context, "没有使用Activity进行初始化控件!", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
cacheView(obj, view);
return view;
}
private ArrayList<ImageSelectHolder> _listImageSelectHoler = new ArrayList<ImageSelectHolder>();
/**
* 图片选择显示控件容器
* @author cubar
*
*/
protected class ImageSelectHolder{
private TextView _sum;
private Gallery _gal;
private ImageSelectView _isv;
protected TextView getTextView(){
return _sum;
}
protected Gallery getGallery(){
return _gal;
}
protected ImageSelectView getView(){
return _isv;
}
public ImageSelectHolder(TextView tv, Gallery gal, ImageSelectView view){
_sum = tv;
_gal = gal;
_isv = view;
}
}
/**
* 通知图片已经选择
*/
public void notifImageSelected(String images){
for(int i = 0 ; i < _listImageSelectHoler.size(); i ++){
if(images.length() > 0){
_listImageSelectHoler.get(i).getTextView().setVisibility(View.INVISIBLE);
_listImageSelectHoler.get(i).getGallery().setVisibility(View.VISIBLE);
}else{
_listImageSelectHoler.get(i).getTextView().setVisibility(View.VISIBLE);
_listImageSelectHoler.get(i).getGallery().setVisibility(View.INVISIBLE);
}
try{
_listImageSelectHoler.get(i).getView().setImages(images);
}catch(Exception e){
Log.e("EditAdapter", "异常:" + e.getMessage());
}
}
}
/**
* 可编辑的链接项目 内部类 可设置直接编辑还是链接到一个文本编辑页编辑
*
* @author cubar
*
*/
protected class EditLinkView {
private String _title;
private String _content;
private String _mask;
private boolean _Bln_newEditAct = false;
// private View.OnClickListener _listener = null;
private boolean _Bln_Clickable = true;
private OnSetDone _onSetDone;
public EditLinkView() {
}
public EditLinkView(String title, String content, String mask,
boolean newedit) {
_title = title;
_content = content;
_mask = mask;
_Bln_newEditAct = newedit;
}
public EditLinkView(String title, String content, String mask,
boolean newedit, OnSetDone set) {
this(title, content, mask, newedit);
/*
* _title = title; _content = content; _mask = mask; _Bln_newEditAct
* = newedit;
*/
_onSetDone = set;
}
/**
* 获取链接显示标题
*
* @return
*/
protected String getTitle() {
return _title;
}
/**
* 设置链接显示标题
*
* @param title
*/
protected void setTitle(String title) {
_title = title;
}
/**
* 获取链接显示内容
*
* @return
*/
protected String getContent() {
return _content;
}
/**
* 设置链接显示内容
*
* @param content
*/
protected void setContent(String content) {
_content = content;
}
/**
* 获取水印提示信息
*
* @return
*/
protected String getMask() {
return _mask;
}
/**
* 设置水印提示信息
*
* @param mask
*/
protected void setMask(String mask) {
_mask = mask;
}
/**
* 获取是否在新编辑界面编辑
*
* @return
*/
protected boolean getIsNewEditAct() {
return _Bln_newEditAct;
}
/**
* 设置是否在新编辑界面编辑
*
* @param isneweditact
*/
protected void setIsNewEditAct(boolean isneweditact) {
_Bln_newEditAct = isneweditact;
}
/**
* 获取点击事件
*
* @return
*/
/*
* protected View.OnClickListener getListener(){ return _listener; }
*/
/**
* 设置点击事件
*
* @param listener
*/
/*
* protected void setClickListener(View.OnClickListener listener){
* _listener = listener; }
*/
/**
* 获取是否可点击
*
* @return
*/
protected boolean getClickable() {
return _Bln_Clickable;
}
/**
* 设置是否可点击
*
* @param enable
*/
protected void setClickable(boolean enable) {
_Bln_Clickable = enable;
}
/**
* 获取赋值接口
*
* @return
*/
protected OnSetDone getOnSetDone() {
return _onSetDone;
}
/**
* 设置赋值接口
*
* @param set
*/
protected void setOnSetDone(OnSetDone set) {
_onSetDone = set;
}
}
/**
* 设置完成赋值接口
*
* @author cubar
*
*/
public interface OnSetDone {
/**
* 设置值
*
* @param value
* 值,字符串
*/
void Set(String value);
}
/**
* 按钮列表项
*
* @author cubar
*
*/
public class ButtonView {
private String _Str_text;
private View.OnClickListener _listener;
/**
* 获取按钮字符
*
* @return
*/
protected String getButtonText() {
return _Str_text;
}
/**
* 设置按钮字符
*
* @param text
*/
protected void setButtonText(String text) {
_Str_text = text;
}
/**
* 获取按钮事件
*
* @return
*/
protected View.OnClickListener getListener() {
return _listener;
}
/**
* 设置按钮事件
*
* @param listener
*/
protected void setListener(View.OnClickListener listener) {
_listener = listener;
}
public ButtonView() {
}
public ButtonView(String text, View.OnClickListener listener) {
_Str_text = text;
_listener = listener;
}
}
//TODO 选择列表项
/**
* 选择列表项
* 2016-08-30 19:23 何洪滔 增加跳转Activity选择列表的方法
*
* @author cubar
*
*/
public class SelectView {
private View _rootView;
private String _title;
private ArrayList<? extends ISelectItem> _lst_select;
private String _selectId = "";
private String pkgname = "";
private String componentname = "";
private Activity _activity = null;
private int _resultCode = -1;
private String _mask = "";
private String _value = "";
private String _argName = "";
private String _args = "";
/**
* 获取包名
* @return
*/
protected String getPakageName(){
return pkgname;
}
/**
* 设置包名
* @param name
*/
protected void setPakageName(String name){
pkgname = name;
}
/**
* 获取组件名称
* @return
*/
protected String getComponentName(){
return componentname;
}
/**
* 设置组件名称
* @param name
*/
protected void setComponentName(String name){
componentname = name;
}
/**
* 获取当前的Activity
* @return
*/
protected Activity getActivity(){
return _activity;
}
/**
* 设置当前的Activity
* @param activity
*/
protected void setActivity(Activity activity){
_activity = activity;
}
/**
* 获取返回标识
* @return
*/
protected int getResultCode(){
return _resultCode;
}
/**
* 设置返回标识
* @param code
*/
protected void setResultCode(int code){
_resultCode = code;
}
/**
* 获取Mask字符串
* @return
*/
protected String getMask(){
return _mask;
}
/**
* 设置Mask字符串
* @param mask
*/
protected void setMask(String mask){
_mask = mask;
}
/**
* 获取显示的内容
* @return
*/
protected String getValue(){
return _value;
}
/**
* 设置显示的内容
* @param value
*/
protected void setValue(String value){
_value = value;
}
/**
* 获取跳转Activity接受的参数名称
* @return
*/
protected String getArgName(){
return _argName;
}
/**
* 设置跳转Activity接受的参数名称
* @param name
*/
protected void setArgName(String name){
_argName = name;
}
/**
* 获取发送至跳转Activity的参数
* @return
*/
protected String getArgs(){
return _args;
}
/**
* 设置发送至跳转Activity的参数
* @param args
*/
protected void setArgs(String args){
_args = args;
}
/**
* 获取根视图供弹出窗口定位
*
* @return
*/
protected View getRootView() {
return _rootView;
}
/**
* 设置根视图供弹出窗口定位
*
* @param root
*/
public void setRootView(View root) {
_rootView = root;
}
/**
* 获取标题
*
* @return
*/
protected String getTitle() {
return _title;
}
/**
* 设置标题
*
* @param title
*/
public void setTitle(String title) {
_title = title;
}
/**
* 获取显示在选择器中的内容
*
* @return
*/
protected String getContent() {
if (_lst_select != null && _lst_select.size() > 0) {
try {
ISelectViewItem svi;
for (int i = 0; i < _lst_select.size(); i++) {
svi = (ISelectViewItem) _lst_select.get(i);
if (svi.getID().equals(_selectId) || svi.getName().equals(_selectId)) {
return svi.getName();
}
}
svi = (ISelectViewItem) _lst_select.get(0);
//设置成默认
if(getSelectCompleted() != null){
getSelectCompleted().OnSelect(svi);
}
_selectId = svi.getID();
return svi.getName();
} catch (Exception e) {
Log.e("EditAdapter", "选择项接口化异常:" + e.getMessage());
}
}else if(_value != "" && _value != null){
return _value;
}else if(_mask != ""){
return _mask;
}
return "请选择";
}
/**
* 设置选择项内容列表
*
* @param items
*/
public void setSelects(ArrayList<? extends ISelectItem> items) {
_lst_select = items;
}
/**
* 获取选择内容列表
*
* @return
*/
protected ArrayList<? extends ISelectItem> getSelects() {
return _lst_select;
}
protected String getSelectedID() {
return _selectId;
}
/**
* 设置当前已经选择的项
*
* @param id
*/
public void setSelectedID(String id) {
_selectId = id;
}
private OnSelectCompleted _completed;
/**
* 获取选择完成回调接口
*
* @return
*/
protected OnSelectCompleted getSelectCompleted() {
return _completed;
}
/**
* 设置选择完成回调接口
*
* @param completed
*/
public void setSelectCompleted(OnSelectCompleted completed) {
_completed = completed;
}
public SelectView() {
}
/**
* 初始化选择项列表
*
* @param title
* 标题
* @param items
* 选择的列表,对应的类要实现ISelectViewItem接口
*/
public SelectView(String title, ArrayList<? extends ISelectItem> items) {
_title = title;
_lst_select = items;
}
/**
* 初始化选择项列表
*
* @param title
* 标题
* @param items
* 选择的列表,对应的类要实现ISelectViewItem接口
* @param selectedId
* 默认选择的项的值
*/
public SelectView(String title, ArrayList<? extends ISelectItem> items, String selectedId) {
_title = title;
_lst_select = items;
_selectId = selectedId;
}
/**
* 初始化选择项列表
*
* @param title
* 标题
* @param items
* 选择的列表,对应的类要实现ISelectViewItem接口
* @param selectedId
* 默认选择的项的值
* @param completed
* 选择完成回调接口
*/
public SelectView(String title, ArrayList<? extends ISelectItem> items, String selectedId,
OnSelectCompleted completed) {
_title = title;
_lst_select = items;
_selectId = selectedId;
_completed = completed;
}
}
/**
* 选择项目数据接口
*
* @author cubar
*
*/
public interface ISelectViewItem extends ISelectItem {
/**
* 获取选择项的值
*
* @return
*/
String getID();
/**
* 获取选择项显示的名称
*
* @return
*/
String getName();
}
/**
* 选择完成事件接口
*
* @author cubar
*
*/
public interface OnSelectCompleted extends OnItemSelectCompleted {
}
// TODO 2016-07-28 11:42 何洪滔 增加新版本的日期节点类及接口定义
/**
* 日期节点版本2
*
* @author cubar
*
*/
protected class DateViewV2 {
private String _title;
private Date _date;
protected String getTitle() {
return _title;
}
/**
* 获取日期
*
* @return
*/
public Date getDate() {
return _date;
}
/**
* 设置日期
*
* @param date
*/
protected void setDate(Date date) {
_date = date;
}
private OnDateSelectCompleted _completed;
/**
* 获取选择完成调用接口
*
* @return
*/
protected OnDateSelectCompleted getSelectCompleted() {
return _completed;
}
public DateViewV2(String title, Date date,
OnDateSelectCompleted completed) {
_title = title;
_date = date;
_completed = completed;
}
}
/**
* 日期节点选择完成接口
*
* @author cubar
*
*/
public interface OnDateSelectCompleted {
/**
* 日期选择
*
* @param date
*/
void OnDateSelect(Date date);
}
// TODO 2016-07-29 20:23 何洪滔 添加图片选择节点类及接口
protected class ImageSelectView {
private String _title;
private String _images;
private OnImageSelectCompleted _completed;
private ImageGalleryAdapter _adt;
/**
* 获取标题
*
* @return
*/
protected String getTitle() {
return _title;
}
/**
* 获取图片列表
*
* @return
*/
protected String getImages() {
return _images;
}
/**
* 设置图片列表
* @param images
*/
protected void setImages(String images){
_images = images;
}
/**
* 获取图片数据适配器
* @return
*/
protected ImageGalleryAdapter getAdapter(){
return _adt;
}
/**
* 获取选择回调接口
*
* @return
*/
protected OnImageSelectCompleted getSelectCompleted() {
return _completed;
}
public ImageSelectView(String title, String images, ImageGalleryAdapter adapter,
OnImageSelectCompleted completed) {
_title = title;
_images = images;
_adt = adapter;
_completed = completed;
}
}
/**
* 图片选择完成回调接口
*
* @author cubar
*
*/
public interface OnImageSelectCompleted {
/**
* 选择到的所有图片列表,图片文件地址,使用";"间隔
*
* @param images
*/
void OnImageSelect(String images);
}
}