Android ListView嵌套ListView、滚动刷新数据
2014-07-08 15:40
369 查看
在Android开发中,咱们常用到的API中ListView就是其中之一,其在有限的手机屏幕上友好的展示数据提供了很好的功能,包括列表展示数据,及滚动分页展示数据,在界面上如果不需要ListView互相嵌套,那么使用就很简单,如:
//context :界面容器对象
//new ArrayList<Map<String,Object>>() :需要展示的数据集合
//R.layout.layout_name 数据项展示列表xml界面
//new String[]{} :绑定数据字段名称
//new int[]{} :需要绑定的空间ID名称
SimpleAdapter simpleAdapter= new SimpleAdapter (context,new ArrayList<Map<String,Object>>(), R.layout.layout_name, new String[]{},new int[]{});
ListView listView=new ListView();
listView.setAdapter(simpleAdapter);
效果图展示链接:http://sj.qq.com/myapp/detail.htm?apkName=opt.ls.liveSteward
如果某页面数据展示较为复杂,需要嵌套ListView才可展示出来,总的思路就是 在adapter中的getView方法中再次使用 嵌套的adaper来绑定数据展示子ListView信息,如:
/**
* @Description TODO(父明细展示适配器)
* @author
* @Date 2014-7-1 11:03:43
*
*/
private class BalancePayAdapter extends SimpleAdapter{
//获取收支详细记录信息
List<Map<String,Object>> dataDetails;
LayoutInflater mInflater;
Context context;
ListViewInScrollView listViewDetail;
private TextView balance_pay_year_lable;
private TextView pay_amount_total_title;
private TextView pay_number_title;
private TextView income_amount_total_title;
private TextView income_number_title;
private TextView balance_pay_year;
private TextView balance_pay_month;
private TextView balance_pay_day;
private LinearLayout pay_id_lin_LinearLayout;
private LinearLayout income_id_lin_LinearLayout;
public BalancePayAdapter(Context context,
List<? extends Map<String, ?>> data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
this.context=context;
this.mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.dataDetails=(List<Map<String, Object>>) data;
}
/**
* @Description TODO(收支详细记录信息)
* @param dataDetail
*/
public void setDataDetails(List<Map<String,Object>> dataDetails){
this.dataDetails=dataDetails;
}
@Override
public View getView (int position, View convertView, ViewGroup parent) {
if(convertView==null){
convertView = mInflater.inflate(R.layout.listview_balance_pay_item, null);
}
//设置收支日期
balance_pay_year=(TextView) convertView.findViewById(R.id.balance_pay_year);
balance_pay_month=(TextView) convertView.findViewById(R.id.balance_pay_month);
balance_pay_day=(TextView) convertView.findViewById(R.id.balance_pay_day);
//设置某天支出总额
pay_amount_total_title=(TextView) convertView.findViewById(R.id.pay_amount_total_title);
//设置某天支出笔数
pay_number_title=(TextView) convertView.findViewById(R.id.pay_number_title);
//设置某天收入总额
income_amount_total_title=(TextView) convertView.findViewById(R.id.income_amount_total_title);
//设置某天收入笔数
income_number_title=(TextView) convertView.findViewById(R.id.income_number_title);
balance_pay_year_lable=(TextView) convertView.findViewById(R.id.balance_pay_year_lable);
listViewDetail=(ListViewInScrollView)convertView.findViewById(R.id.balance_pay_detail_view);
if(null!=dataDetails&&!dataDetails.get(position).isEmpty())
{ Map mainMapData= dataDetails.get(position);
String balancePayRemark=PMSUtil.isNull(mainMapData.get("balancePayRemark"));
//获取当年年份
String currentYear=DateTimeUtil.formatDate8(new Date());
String queryDate=PMSUtil.isNull(mainMapData.get("balance_pay_date"));
String[] yearMonthDay=new String[]{"XXXX","XX","XX"};
if(null!=queryDate&&!"".equals(queryDate)){
yearMonthDay=queryDate.split("-");
}
/**
*
* 开始设置实际内容
*/
if(currentYear.equals(yearMonthDay[0])){
balance_pay_year.setVisibility(View.GONE);
balance_pay_year_lable.setVisibility(View.GONE);
}
balance_pay_year.setText(PMSUtil.isNull(yearMonthDay[0]));
balance_pay_month.setText(PMSUtil.isNull(yearMonthDay[1]));
balance_pay_day.setText(PMSUtil.isNull(yearMonthDay[2]));
pay_amount_total_title.setText(PMSUtil.isNull(mainMapData.get("pay_amount_total")));
String pay_number=PMSUtil.isNull(mainMapData.get("pay_number"));
pay_number_title.setText(pay_number);
if(pay_number==null||"".equals(pay_number)||(Constant.REMARK_KEY_VALUE.equals(balancePayRemark)&&"1".equals(pay_number))){
pay_id_lin_LinearLayout=(LinearLayout) convertView.findViewById(R.id.pay_id_lin);
pay_id_lin_LinearLayout.setVisibility(View.GONE);
}
income_amount_total_title.setText(PMSUtil.isNull(mainMapData.get("income_amount_total")));
String income_number=PMSUtil.isNull(mainMapData.get("income_number"));
income_number_title.setText(income_number);
income_id_lin_LinearLayout=(LinearLayout) convertView.findViewById(R.id.income_id_lin);
if(income_number==null||"".equals(income_number)||"0".equals(income_number)){
income_id_lin_LinearLayout.setVisibility(View.GONE);
}else{
income_id_lin_LinearLayout.setVisibility(View.VISIBLE);
}
String[] from=new String[]{"id","create_date","amount","income_model","remark","thumbnail_path"};
int[] to=new int[]{R.id.incomeId,R.id.create_date_title,R.id.amount_title,R.id.income_model_title,R.id.remark_title,R.id.image_uri_path_title};
//获取收支详细记录信息
List<Map<String,Object>> dataDetail=(List<Map<String, Object>>) mainMapData.get("datas");
BalancePayDetailAdapter balancePayDetailAdapter = new BalancePayDetailAdapter(position,context, (dataDetail==null?new ArrayList<Map<String,Object>>():dataDetail),
R.layout.listview_balance_pay_detail_item, from, to);
listViewDetail.setOnItemClickListener(new BalancePayDetailOnItemClickListener());
listViewDetail.setAdapter(balancePayDetailAdapter);
}
return convertView;
}
/**
* @Description TODO(收支详细ListView选择事件)
* @author
*
*/
private class BalancePayDetailOnItemClickListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position,
long arg3) {
ListView lView=(ListView)adapter;//adapter其实就是ListView
ImageView imageView= (ImageView) view.findViewById(R.id.image_uri_path_title);
Bitmap bitmap=imageView.getDrawingCache();
if(R.id.deleteIncomeRecord==view.getId()){
//点击了删除按钮
Map<String,Object> map=(Map<String, Object>) lView.getItemAtPosition(position);
if(incomeRecordService==null){
incomeRecordService=new IncomeRecordServiceImpl(context);
}
try {
Map msg=incomeRecordService.deleteIncomeRecordInfo(map);
if( Constant.MSG_RESULT_TRUE.equals(msg.get(Constant.MSG_RESULT_CODE))){
if(!bitmap.isRecycled()){
bitmap.recycle();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
/**
* @Description TODO(子明细适配器)
* @author
*
*/
private class BalancePayDetailAdapter extends SimpleAdapter{
//获取收支详细记录信息
List<Map<String,Object>> dataDetails;
LayoutInflater mInflater;
private TextView create_date_view;
private TextView amount_view;
private TextView income_model_view;
private TextView remark_view;
private ImageView image_uri_path_view;
private ImageButton deleteIncomeRecord;
private Bitmap bmp;
private int positionParent;
private Context context;
public BalancePayDetailAdapter(int position,Context context,
List<? extends Map<String, ?>> data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
this.context=context;
this.dataDetails=(List<Map<String, Object>>) data;
this.mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.positionParent=position;
}
@Override
public View getView (int position, View convertView, ViewGroup parent) {
if(convertView==null){
convertView = mInflater.inflate(R.layout.listview_balance_pay_detail_item, null);
}
if(null!=dataDetails&&!dataDetails.get(position).isEmpty())
{
Map mainMapData= dataDetails.get(position);
create_date_view=(TextView) convertView.findViewById(R.id.create_date_title);
amount_view=(TextView) convertView.findViewById(R.id.amount_title);
income_model_view=(TextView) convertView.findViewById(R.id.income_model_title);
remark_view=(TextView) convertView.findViewById(R.id.remark_title);
image_uri_path_view=(ImageView) convertView.findViewById(R.id.image_uri_path_title);
deleteIncomeRecord=(ImageButton) convertView.findViewById(R.id.deleteIncomeRecord);
deleteIncomeRecord.setOnClickListener(new DeleteBalancePayRecordOnClickListener(position));
create_date_view.setText(PMSUtil.isNull(mainMapData.get("create_date")));
amount_view.setText(PMSUtil.isNull(mainMapData.get("amount"))+getResources().getString(R.string.rmb));
//income_model_view.setText(Constant.getIncomeModelValue(PMSUtil.isNull(mainMapData.get("income_model"))));
income_model_view.setText(PMSUtil.isNull(mainMapData.get("project_name")));
String income_model=PMSUtil.isNull(mainMapData.get("income_model"));
if(Constant.incomeModel[0].equals(income_model)){
//支出
amount_view.setTextColor(getResources().getColor(R.color.lightred));
}else if(Constant.incomeModel[1].equals(income_model)){
//收入
amount_view.setTextColor(getResources().getColor(R.color.lightblue));
}
remark_view.setText(PMSUtil.isNull(mainMapData.get("remark")));
image_uri_path_view.setOnClickListener(new ImageViewOnClickListener(position));
String image_uri_path=PMSUtil.isNull(mainMapData.get("thumbnail_path"));
if(image_uri_path!=null&&!"".equals(image_uri_path)&&!"null".equals(PMSUtil.isNull(image_uri_path))){
try {
//BitmapFactory.Options options = new BitmapFactory.Options();
//options.inSampleSize = 1;
//bmp = BitmapFactory.decodeFile(image_uri_path, options);
// bmp=OptimizeImage.decodeSampledBitmapFromFile(image_uri_path, 100, 100);
// image_uri_path_view.setImageBitmap(bmp);
if(imageThreadNum<sysNum){
//子线程异步加载图片数据
new MyLoadImageThread(image_uri_path_view,image_uri_path).start();
imageThreadNum++;
} else{
//主线程加载图片
OptimizeImage optimizeImage=OptimizeImage.initializeInstance();
optimizeImage.loadBitmap(image_uri_path, image_uri_path_view);
}
} catch (Exception e) {
Toast.makeText(context, R.string.loadImageError, Toast.LENGTH_SHORT).show();
}
}else{
//image_uri_path_view.setVisibility(View.GONE);
image_uri_path_view.setMinimumHeight(30);
}
}
return convertView;
}
/**
* @Description TODO(删除收支记录单击监听事件)
* @author 彭甜
*
*/
public class DeleteBalancePayRecordOnClickListener implements OnClickListener{
private int position;
public DeleteBalancePayRecordOnClickListener(int position){
this.position=position;
}
@Override
public void onClick(View arg0) {
if(R.id.deleteIncomeRecord==arg0.getId()){
//删除收支记录
final Map mapData= dataDetails.get(position);
if(mapData!=null&&!"".equals(mapData.get("id"))){
AlertDialog.Builder builder = new Builder(context);
builder.setMessage("确认删除吗?");
builder.setTitle("提示");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
//删除的收支金额
double amount=PMSUtil.toTwoPointDouble(PMSUtil.isNull(mapData.get("amount")));
try {
if(incomeRecordService==null){
incomeRecordService=new IncomeRecordServiceImpl(context);
}
Map msg=incomeRecordService.deleteIncomeRecordInfo(mapData);
if((Constant.MSG_RESULT_TRUE).equals(msg.get(Constant.MSG_RESULT_CODE))){
//刷新收支明细ListView
dataDetails.remove(position);
BalancePayDetailAdapter.this.notifyDataSetChanged();
//刷新收支明细ListView 父级
String income_model=PMSUtil.isNull(mapData.get("income_model"));
if((Constant.incomeModel[0]).equals(income_model)){
//支出数据调整
int pay_number=Integer.parseInt(PMSUtil.isNull(list.get(positionParent).get("pay_number")));
double pay_amount_total=PMSUtil.toTwoPointDouble(PMSUtil.isNull(list.get(positionParent).get("pay_amount_total")));
list.get(positionParent).put("pay_amount_total", PMSUtil.toNPointDouble(pay_amount_total-amount));
list.get(positionParent).put("pay_number", pay_number-1);
}else if((Constant.incomeModel[1]).equals(income_model)){
//收入数据调整
int income_number=Integer.parseInt(PMSUtil.isNull(list.get(positionParent).get("income_number")));
double income_amount_total=PMSUtil.toTwoPointDouble(PMSUtil.isNull(list.get(positionParent).get("income_amount_total")));
list.get(positionParent).put("income_amount_total", PMSUtil.toNPointDouble(income_amount_total-amount));
list.get(positionParent).put("income_number", income_number-1);
}
int income_number=Integer.parseInt(PMSUtil.isNull(list.get(positionParent).get("income_number")));
int pay_number=Integer.parseInt(PMSUtil.isNull(list.get(positionParent).get("pay_number")));
if((income_number<1&&pay_number<1)||(income_number<=0&&pay_number<=1)){
String balance_pay_date=PMSUtil.isNull(list.get(positionParent).get("balance_pay_date"));
incomeRecordService.deleteIncomeRecordByIncomeDate(balance_pay_date);
//但某天收支记录都没有时候 就删除这天的记录
list.remove(positionParent);
//总记录数也就减一
--num;
}
//刷新最上级ListView列表
simpleAdapter.notifyDataSetChanged();
}
Toast.makeText(context, PMSUtil.isNull(msg.get(Constant.MSG_RESULT_DES)), Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.getStackTrace();
Toast.makeText(context,"删除收支记录失败("+e.getMessage()+")", Toast.LENGTH_SHORT).show();
}
arg0.dismiss();
} });
builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
arg0.dismiss();
}
});
builder.create().show();
}
}
}
}
/**
* @Description TODO(图片点击监听)
* @author 彭甜
*
*/
public class ImageViewOnClickListener implements OnClickListener{
private int position;
public ImageViewOnClickListener(int position){
this.position=position;
}
@Override
public void onClick(View view) {
if(R.id.image_uri_path_title==view.getId()){
//点击图片
Map<String,Object> map=(Map<String, Object>) dataDetails.get(position);
String image_uri_path = !PMSUtil.isEmpty(PMSUtil.isNull(map
.get("image_uri_path"))) ? PMSUtil.isNull(map
.get("image_uri_path")) : PMSUtil.isNull(map
.get("thumbnail_path"));
if(image_uri_path!=null&&!"".equals(image_uri_path)){
Intent intent=new Intent(context,ImageZoomActivity.class);
intent.putExtra("image_uri_path", image_uri_path);
startActivity(intent);
}
}
}
}
}
有需要的朋友可以留下邮箱我把完整的源码发过去。
效果图展示链接:http://sj.qq.com/myapp/detail.htm?apkName=opt.ls.liveSteward
//context :界面容器对象
//new ArrayList<Map<String,Object>>() :需要展示的数据集合
//R.layout.layout_name 数据项展示列表xml界面
//new String[]{} :绑定数据字段名称
//new int[]{} :需要绑定的空间ID名称
SimpleAdapter simpleAdapter= new SimpleAdapter (context,new ArrayList<Map<String,Object>>(), R.layout.layout_name, new String[]{},new int[]{});
ListView listView=new ListView();
listView.setAdapter(simpleAdapter);
效果图展示链接:http://sj.qq.com/myapp/detail.htm?apkName=opt.ls.liveSteward
如果某页面数据展示较为复杂,需要嵌套ListView才可展示出来,总的思路就是 在adapter中的getView方法中再次使用 嵌套的adaper来绑定数据展示子ListView信息,如:
/**
* @Description TODO(父明细展示适配器)
* @author
* @Date 2014-7-1 11:03:43
*
*/
private class BalancePayAdapter extends SimpleAdapter{
//获取收支详细记录信息
List<Map<String,Object>> dataDetails;
LayoutInflater mInflater;
Context context;
ListViewInScrollView listViewDetail;
private TextView balance_pay_year_lable;
private TextView pay_amount_total_title;
private TextView pay_number_title;
private TextView income_amount_total_title;
private TextView income_number_title;
private TextView balance_pay_year;
private TextView balance_pay_month;
private TextView balance_pay_day;
private LinearLayout pay_id_lin_LinearLayout;
private LinearLayout income_id_lin_LinearLayout;
public BalancePayAdapter(Context context,
List<? extends Map<String, ?>> data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
this.context=context;
this.mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.dataDetails=(List<Map<String, Object>>) data;
}
/**
* @Description TODO(收支详细记录信息)
* @param dataDetail
*/
public void setDataDetails(List<Map<String,Object>> dataDetails){
this.dataDetails=dataDetails;
}
@Override
public View getView (int position, View convertView, ViewGroup parent) {
if(convertView==null){
convertView = mInflater.inflate(R.layout.listview_balance_pay_item, null);
}
//设置收支日期
balance_pay_year=(TextView) convertView.findViewById(R.id.balance_pay_year);
balance_pay_month=(TextView) convertView.findViewById(R.id.balance_pay_month);
balance_pay_day=(TextView) convertView.findViewById(R.id.balance_pay_day);
//设置某天支出总额
pay_amount_total_title=(TextView) convertView.findViewById(R.id.pay_amount_total_title);
//设置某天支出笔数
pay_number_title=(TextView) convertView.findViewById(R.id.pay_number_title);
//设置某天收入总额
income_amount_total_title=(TextView) convertView.findViewById(R.id.income_amount_total_title);
//设置某天收入笔数
income_number_title=(TextView) convertView.findViewById(R.id.income_number_title);
balance_pay_year_lable=(TextView) convertView.findViewById(R.id.balance_pay_year_lable);
listViewDetail=(ListViewInScrollView)convertView.findViewById(R.id.balance_pay_detail_view);
if(null!=dataDetails&&!dataDetails.get(position).isEmpty())
{ Map mainMapData= dataDetails.get(position);
String balancePayRemark=PMSUtil.isNull(mainMapData.get("balancePayRemark"));
//获取当年年份
String currentYear=DateTimeUtil.formatDate8(new Date());
String queryDate=PMSUtil.isNull(mainMapData.get("balance_pay_date"));
String[] yearMonthDay=new String[]{"XXXX","XX","XX"};
if(null!=queryDate&&!"".equals(queryDate)){
yearMonthDay=queryDate.split("-");
}
/**
*
* 开始设置实际内容
*/
if(currentYear.equals(yearMonthDay[0])){
balance_pay_year.setVisibility(View.GONE);
balance_pay_year_lable.setVisibility(View.GONE);
}
balance_pay_year.setText(PMSUtil.isNull(yearMonthDay[0]));
balance_pay_month.setText(PMSUtil.isNull(yearMonthDay[1]));
balance_pay_day.setText(PMSUtil.isNull(yearMonthDay[2]));
pay_amount_total_title.setText(PMSUtil.isNull(mainMapData.get("pay_amount_total")));
String pay_number=PMSUtil.isNull(mainMapData.get("pay_number"));
pay_number_title.setText(pay_number);
if(pay_number==null||"".equals(pay_number)||(Constant.REMARK_KEY_VALUE.equals(balancePayRemark)&&"1".equals(pay_number))){
pay_id_lin_LinearLayout=(LinearLayout) convertView.findViewById(R.id.pay_id_lin);
pay_id_lin_LinearLayout.setVisibility(View.GONE);
}
income_amount_total_title.setText(PMSUtil.isNull(mainMapData.get("income_amount_total")));
String income_number=PMSUtil.isNull(mainMapData.get("income_number"));
income_number_title.setText(income_number);
income_id_lin_LinearLayout=(LinearLayout) convertView.findViewById(R.id.income_id_lin);
if(income_number==null||"".equals(income_number)||"0".equals(income_number)){
income_id_lin_LinearLayout.setVisibility(View.GONE);
}else{
income_id_lin_LinearLayout.setVisibility(View.VISIBLE);
}
String[] from=new String[]{"id","create_date","amount","income_model","remark","thumbnail_path"};
int[] to=new int[]{R.id.incomeId,R.id.create_date_title,R.id.amount_title,R.id.income_model_title,R.id.remark_title,R.id.image_uri_path_title};
//获取收支详细记录信息
List<Map<String,Object>> dataDetail=(List<Map<String, Object>>) mainMapData.get("datas");
BalancePayDetailAdapter balancePayDetailAdapter = new BalancePayDetailAdapter(position,context, (dataDetail==null?new ArrayList<Map<String,Object>>():dataDetail),
R.layout.listview_balance_pay_detail_item, from, to);
listViewDetail.setOnItemClickListener(new BalancePayDetailOnItemClickListener());
listViewDetail.setAdapter(balancePayDetailAdapter);
}
return convertView;
}
/**
* @Description TODO(收支详细ListView选择事件)
* @author
*
*/
private class BalancePayDetailOnItemClickListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position,
long arg3) {
ListView lView=(ListView)adapter;//adapter其实就是ListView
ImageView imageView= (ImageView) view.findViewById(R.id.image_uri_path_title);
Bitmap bitmap=imageView.getDrawingCache();
if(R.id.deleteIncomeRecord==view.getId()){
//点击了删除按钮
Map<String,Object> map=(Map<String, Object>) lView.getItemAtPosition(position);
if(incomeRecordService==null){
incomeRecordService=new IncomeRecordServiceImpl(context);
}
try {
Map msg=incomeRecordService.deleteIncomeRecordInfo(map);
if( Constant.MSG_RESULT_TRUE.equals(msg.get(Constant.MSG_RESULT_CODE))){
if(!bitmap.isRecycled()){
bitmap.recycle();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
/**
* @Description TODO(子明细适配器)
* @author
*
*/
private class BalancePayDetailAdapter extends SimpleAdapter{
//获取收支详细记录信息
List<Map<String,Object>> dataDetails;
LayoutInflater mInflater;
private TextView create_date_view;
private TextView amount_view;
private TextView income_model_view;
private TextView remark_view;
private ImageView image_uri_path_view;
private ImageButton deleteIncomeRecord;
private Bitmap bmp;
private int positionParent;
private Context context;
public BalancePayDetailAdapter(int position,Context context,
List<? extends Map<String, ?>> data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
this.context=context;
this.dataDetails=(List<Map<String, Object>>) data;
this.mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.positionParent=position;
}
@Override
public View getView (int position, View convertView, ViewGroup parent) {
if(convertView==null){
convertView = mInflater.inflate(R.layout.listview_balance_pay_detail_item, null);
}
if(null!=dataDetails&&!dataDetails.get(position).isEmpty())
{
Map mainMapData= dataDetails.get(position);
create_date_view=(TextView) convertView.findViewById(R.id.create_date_title);
amount_view=(TextView) convertView.findViewById(R.id.amount_title);
income_model_view=(TextView) convertView.findViewById(R.id.income_model_title);
remark_view=(TextView) convertView.findViewById(R.id.remark_title);
image_uri_path_view=(ImageView) convertView.findViewById(R.id.image_uri_path_title);
deleteIncomeRecord=(ImageButton) convertView.findViewById(R.id.deleteIncomeRecord);
deleteIncomeRecord.setOnClickListener(new DeleteBalancePayRecordOnClickListener(position));
create_date_view.setText(PMSUtil.isNull(mainMapData.get("create_date")));
amount_view.setText(PMSUtil.isNull(mainMapData.get("amount"))+getResources().getString(R.string.rmb));
//income_model_view.setText(Constant.getIncomeModelValue(PMSUtil.isNull(mainMapData.get("income_model"))));
income_model_view.setText(PMSUtil.isNull(mainMapData.get("project_name")));
String income_model=PMSUtil.isNull(mainMapData.get("income_model"));
if(Constant.incomeModel[0].equals(income_model)){
//支出
amount_view.setTextColor(getResources().getColor(R.color.lightred));
}else if(Constant.incomeModel[1].equals(income_model)){
//收入
amount_view.setTextColor(getResources().getColor(R.color.lightblue));
}
remark_view.setText(PMSUtil.isNull(mainMapData.get("remark")));
image_uri_path_view.setOnClickListener(new ImageViewOnClickListener(position));
String image_uri_path=PMSUtil.isNull(mainMapData.get("thumbnail_path"));
if(image_uri_path!=null&&!"".equals(image_uri_path)&&!"null".equals(PMSUtil.isNull(image_uri_path))){
try {
//BitmapFactory.Options options = new BitmapFactory.Options();
//options.inSampleSize = 1;
//bmp = BitmapFactory.decodeFile(image_uri_path, options);
// bmp=OptimizeImage.decodeSampledBitmapFromFile(image_uri_path, 100, 100);
// image_uri_path_view.setImageBitmap(bmp);
if(imageThreadNum<sysNum){
//子线程异步加载图片数据
new MyLoadImageThread(image_uri_path_view,image_uri_path).start();
imageThreadNum++;
} else{
//主线程加载图片
OptimizeImage optimizeImage=OptimizeImage.initializeInstance();
optimizeImage.loadBitmap(image_uri_path, image_uri_path_view);
}
} catch (Exception e) {
Toast.makeText(context, R.string.loadImageError, Toast.LENGTH_SHORT).show();
}
}else{
//image_uri_path_view.setVisibility(View.GONE);
image_uri_path_view.setMinimumHeight(30);
}
}
return convertView;
}
/**
* @Description TODO(删除收支记录单击监听事件)
* @author 彭甜
*
*/
public class DeleteBalancePayRecordOnClickListener implements OnClickListener{
private int position;
public DeleteBalancePayRecordOnClickListener(int position){
this.position=position;
}
@Override
public void onClick(View arg0) {
if(R.id.deleteIncomeRecord==arg0.getId()){
//删除收支记录
final Map mapData= dataDetails.get(position);
if(mapData!=null&&!"".equals(mapData.get("id"))){
AlertDialog.Builder builder = new Builder(context);
builder.setMessage("确认删除吗?");
builder.setTitle("提示");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
//删除的收支金额
double amount=PMSUtil.toTwoPointDouble(PMSUtil.isNull(mapData.get("amount")));
try {
if(incomeRecordService==null){
incomeRecordService=new IncomeRecordServiceImpl(context);
}
Map msg=incomeRecordService.deleteIncomeRecordInfo(mapData);
if((Constant.MSG_RESULT_TRUE).equals(msg.get(Constant.MSG_RESULT_CODE))){
//刷新收支明细ListView
dataDetails.remove(position);
BalancePayDetailAdapter.this.notifyDataSetChanged();
//刷新收支明细ListView 父级
String income_model=PMSUtil.isNull(mapData.get("income_model"));
if((Constant.incomeModel[0]).equals(income_model)){
//支出数据调整
int pay_number=Integer.parseInt(PMSUtil.isNull(list.get(positionParent).get("pay_number")));
double pay_amount_total=PMSUtil.toTwoPointDouble(PMSUtil.isNull(list.get(positionParent).get("pay_amount_total")));
list.get(positionParent).put("pay_amount_total", PMSUtil.toNPointDouble(pay_amount_total-amount));
list.get(positionParent).put("pay_number", pay_number-1);
}else if((Constant.incomeModel[1]).equals(income_model)){
//收入数据调整
int income_number=Integer.parseInt(PMSUtil.isNull(list.get(positionParent).get("income_number")));
double income_amount_total=PMSUtil.toTwoPointDouble(PMSUtil.isNull(list.get(positionParent).get("income_amount_total")));
list.get(positionParent).put("income_amount_total", PMSUtil.toNPointDouble(income_amount_total-amount));
list.get(positionParent).put("income_number", income_number-1);
}
int income_number=Integer.parseInt(PMSUtil.isNull(list.get(positionParent).get("income_number")));
int pay_number=Integer.parseInt(PMSUtil.isNull(list.get(positionParent).get("pay_number")));
if((income_number<1&&pay_number<1)||(income_number<=0&&pay_number<=1)){
String balance_pay_date=PMSUtil.isNull(list.get(positionParent).get("balance_pay_date"));
incomeRecordService.deleteIncomeRecordByIncomeDate(balance_pay_date);
//但某天收支记录都没有时候 就删除这天的记录
list.remove(positionParent);
//总记录数也就减一
--num;
}
//刷新最上级ListView列表
simpleAdapter.notifyDataSetChanged();
}
Toast.makeText(context, PMSUtil.isNull(msg.get(Constant.MSG_RESULT_DES)), Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.getStackTrace();
Toast.makeText(context,"删除收支记录失败("+e.getMessage()+")", Toast.LENGTH_SHORT).show();
}
arg0.dismiss();
} });
builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
arg0.dismiss();
}
});
builder.create().show();
}
}
}
}
/**
* @Description TODO(图片点击监听)
* @author 彭甜
*
*/
public class ImageViewOnClickListener implements OnClickListener{
private int position;
public ImageViewOnClickListener(int position){
this.position=position;
}
@Override
public void onClick(View view) {
if(R.id.image_uri_path_title==view.getId()){
//点击图片
Map<String,Object> map=(Map<String, Object>) dataDetails.get(position);
String image_uri_path = !PMSUtil.isEmpty(PMSUtil.isNull(map
.get("image_uri_path"))) ? PMSUtil.isNull(map
.get("image_uri_path")) : PMSUtil.isNull(map
.get("thumbnail_path"));
if(image_uri_path!=null&&!"".equals(image_uri_path)){
Intent intent=new Intent(context,ImageZoomActivity.class);
intent.putExtra("image_uri_path", image_uri_path);
startActivity(intent);
}
}
}
}
}
有需要的朋友可以留下邮箱我把完整的源码发过去。
效果图展示链接:http://sj.qq.com/myapp/detail.htm?apkName=opt.ls.liveSteward
相关文章推荐
- Android ListView 滚动加载数据
- Android ListView数据刷新
- 关于android的listview数据列表显示的下拉和刷新报错问题
- 【Android基础篇】SimpleAdapter动态添加数据时的ListView刷新
- Android 动态刷新listview中的数据
- Android中级进阶四ListView上拉刷新数据的实现
- android开发中难免遇到listview刷新数据出现异常
- android listview 数据删除后没有自动刷新,已删除数据依然显示但是不可点击
- android listview数据刷新
- Android关于ListView中使用EditText获取输入数据和刷新ListView数据的解决方案
- Android动态刷新listview中的数据
- Android之ListView滚动到底后自动加载数据
- android中ListView滚动刷新
- Android第二十三期 - 256k的ListView下拉刷新和滚动加载数据
- android中ListView滚动刷新
- android Listview下拉滚动时自动加载数据
- Android动态刷新listview中的数据
- android testview + listview 整体滚动刷新
- Android ListView 滚动加载数据
- Android之ListView滚动到底后自动加载数据