掌上快递之主界面篇(3)

概述

这篇比较简单,就是收藏自己的快递信息以后随便查阅进度,界面找了一些小logo显得比较干净整洁,数据库部分处理是使用了Xutil中的DbUtils部分来处理

1、快递收藏效果

在MyExpressActivity.java中的写了一个适配器

MyExpressAdapter adapter;,进入MyExpressAdapter.java中可以看出它继承BaseAdapter,其中核心是在getview部分

@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		 ViewHolder holder;

		 if (convertView == null) {
			<span style="color:#009900;"> convertView = mInflater.inflate(R.layout.my_express_item,parent, false);</span>
			 holder = new ViewHolder();
			 holder.remarkName = (TextView) convertView.findViewById(R.id.tv_remark_name);
			 holder.expressNameAndNumber = (TextView) convertView.findViewById(R.id.tv_express_name_number);
			 holder.newInfo = (TextView) convertView.findViewById(R.id.tv_new_context);
			 holder.newTime = (TextView) convertView.findViewById(R.id.tv_new_time);
			 convertView.setTag(holder);
		} else {
			holder = (ViewHolder) convertView.getTag();
		}
		holder.remarkName.setText(lists.get(position).getName());
		holder.expressNameAndNumber.setText(lists.get(position).getExpressName() + "  " + lists.get(position).getExpressNumber());
		holder.newInfo.setText(lists.get(position).getNewInfo());
		holder.newTime.setText(lists.get(position).getNewDate());
		return convertView;
	}

在面绿色的布局文件中,就是这个效果的核心所在

<?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="vertical"
     xmlns:baiduadsdk="http://schemas.android.com/apk/res/com.weimeijing.feigeshudi"
     >

    <TextView
        android:id="@+id/tv_remark_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="备注名称"
        android:textColor="#FF000000"
        android:textSize="15dp" />

    <TextView
        android:id="@+id/tv_express_name_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="快递名称 + 单号"
        android:background="@drawable/mark"
       android:textColor="@color/white"
        android:textSize="13dp" />
	<TextView
        android:id="@+id/tv_new_context"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="最新信息"
        android:textColor="#FF000000"
        android:textSize="17dp" />
	<TextView
        android:id="@+id/tv_new_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="最新时间"
        android:textColor="#FF353535"
        android:textSize="13dp" />

</LinearLayout>

2、逻辑处理

在MyExpressActivity.java利用Xutil中的DbUtils部分来处理,来完成增删改查

package com;

import java.util.ArrayList;
import java.util.List;

import com.lidroid.xutils.DbUtils;
import com.lidroid.xutils.db.sqlite.Selector;
import com.lidroid.xutils.exception.DbException;
import com.weimeijing.feigeshudi.R;
import com.adapter.MyExpressAdapter;
import com.bean.ExpressHistory;
import com.util.QueryExpressUtil;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.TextureView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MyExpressActivity extends Fragment {
	private ListView myExpress;
	private List<ExpressHistory> infoList;
	private ProgressDialog progressDialog;
	MyExpressAdapter adapter;
	private ExpressHistory isExist;
	DbUtils db;
	private String number;
	private TextView count;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		return inflater.inflate(R.layout.activity_my_express, container, false);

	}

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);
		<span style="color:#33CC00;">db = DbUtils.create(getActivity());</span>
		myExpress = (ListView) getView().findViewById(R.id.lv_my_express);
		// count计数
		count = (TextView) getView().findViewById(R.id.count);
		try {
			infoList = db.findAll(Selector.from(ExpressHistory.class));
			if (infoList == null) {
				count.setText("0");
			} else {
				count.setText("" + infoList.size());
			}
		} catch (DbException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		myExpress.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {

				Log.v("setOnItemClickListener", "setOnItemClickListener");
				progressDialog = new ProgressDialog(getActivity());
				number = infoList.get(position).getExpressNumber();
				String name = infoList.get(position).getExpressName();
				String code = infoList.get(position).getExpressCode();
				QueryExpressUtil.queryExpressForNumber(number, name, code,
						getActivity(), progressDialog);

			}
		});
		myExpress.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View view,
					final int position, long id) {
				// TODO Auto-generated method stub
				Log.v("setOnItemLongClickListener",
						"setOnItemLongClickListener");
				new AlertDialog.Builder(getActivity())
						.setTitle("操作")
						.setItems(R.array.arrcontent,
								new DialogInterface.OnClickListener() {
									public void onClick(DialogInterface dialog,
											int which) {
										final String[] PK = getResources()
												.getStringArray(
														R.array.arrcontent);
										if (PK[which].equals("修改备注")) {
											final EditText editText = new EditText(
													getActivity());
											new AlertDialog.Builder(
													getActivity())
													.setTitle("请输入备注名称")
													.setIcon(
															android.R.drawable.ic_dialog_info)
													.setView(editText)
													.setPositiveButton(
															"确定",
															new DialogInterface.OnClickListener() {

																@Override
																public void onClick(
																		DialogInterface dialog,
																		int which) {
																	number = infoList
																			.get(position)
																			.getExpressNumber();
																	// TODO
																	// Auto-generated
																	// method
																	// stub
																	try {
																		isExist = db
																				.findFirst(Selector
																						.from(ExpressHistory.class)
																						.where("expressnumber",
																								"=",
																								number));
																	} catch (DbException e1) {
																		// TODO
																		// Auto-generated
																		// catch
																		// block
																		e1.printStackTrace();
																	}
																	isExist.setName(editText
																			.getText()
																			.toString());
																	try {
																		db.update(isExist);
																	} catch (DbException e1) {
																		// TODO
																		// Auto-generated
																		// catch
																		// block
																		e1.printStackTrace();
																	}
																	adapter = (MyExpressAdapter) myExpress
																			.getAdapter();
																	adapter.notifyDataSetChanged();// 实现数据的实时刷新
																}
															})
													.setNegativeButton(
															"取消",
															new DialogInterface.OnClickListener() {
																@Override
																public void onClick(
																		DialogInterface dialog,
																		int which) {
																	// TODO
																	// Auto-generated
																	// method
																	// stub
																	dialog.cancel();
																}
															}).create().show();

										}
										if (PK[which].equals("删除")) {
											String number = infoList.get(
													position)
													.getExpressNumber();
											Log.v("number", number);
											try {
												isExist = db
														.findFirst(Selector
																.from(ExpressHistory.class)
																.where("expressnumber",
																		"=",
																		number));
											} catch (DbException e1) {
												// TODO Auto-generated catch
												// block
												e1.printStackTrace();
											}
											try {
												db.deleteById(
														ExpressHistory.class,
														isExist.getId());
											} catch (DbException e) {
												// TODO Auto-generated catch
												// block
												e.printStackTrace();
											}
											infoList.remove(position);
											adapter = (MyExpressAdapter) myExpress
													.getAdapter();
											if (!adapter.isEmpty()) {
												adapter.notifyDataSetChanged(); // 实现数据的实时刷新
											}
											Toast.makeText(getActivity(),
													PK[which] + "成功",
													Toast.LENGTH_LONG).show();
										}
										if (PK[which].equals("通过短信发送")) {
											Uri uri = Uri.parse("smsto:");

											Intent intent = new Intent(
													Intent.ACTION_SENDTO, uri);

											intent.putExtra(
													"sms_body",
													infoList.get(position)
															.getNewDate()
															+ "  "
															+ infoList
																	.get(position)
																	.getNewInfo());

											startActivity(intent);
										}
									}
								})
						.setNegativeButton("取消",
								new DialogInterface.OnClickListener() {
									public void onClick(DialogInterface dialog,
											int which) {
										// TODO Auto-generated method stub

									}
								}).show();
				return true;

			}

		});
	}

	@Override
	public void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		DbUtils db = DbUtils.create(getActivity());
		// List<ExpressHistory> infoList = null;
		try {
			infoList = db.findAll(ExpressHistory.class);
		} catch (DbException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (infoList == null || infoList.size() == 0) {
			Toast.makeText(getActivity(), "当前还没有保存任何快递哦,保存后再来这里查看吧!",
					Toast.LENGTH_SHORT).show();
		} else {
			MyExpressAdapter adapter = new MyExpressAdapter(getActivity(),
					(ArrayList<ExpressHistory>) infoList);
			myExpress.setAdapter(adapter);
		}

	}

	@Override
	public void onPause() {
		super.onPause();
	}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-30 15:19:19

掌上快递之主界面篇(3)的相关文章

掌上快递之主界面篇(1)

概述 整体是通过2个Fragment+FragmentTabHost组合而成,本节主要针对Fragment1做一个总结,该Fragment主要实现以下功能 [1]输入快递单号或者扫描二维码 查询快递信息 [2]侧滑栏集成的百度地图可以显示附近快递点,方便选择合适自己的地点 本篇只总结主界面架构和功能1,先上图有个直观感受 1.主界面结构 Fragment+FragmentTabHost组合而成,其中整体的布局文件是在LinearLayout(vertical)的布局中嵌入了FrameLayout

掌上快递之主界面篇(2)

概述 这是Fragment1的第二部分内容 侧滑栏,(主要效果是仿QQ效果)使用了github上的slidingmenu_librarygithub开源控件 效果图如下: [1]内容区域会伴随菜单的出现而缩小 [2]侧滑菜单给人的感觉是隐藏在内容的后面,而不是拖出来的感觉 [3]侧滑菜单有一个缩放以及透明度的效果 然后就是简单的百度地图,和摇一摇显示小知识 1.布局文件 include在fragment1的主布局文件R.layout.activity_main中      <include la

掌上快递之开机启动篇

启动篇 主要分为开机和功能导航俩部分来总结 先上部分截图图直观感受下 1.开机部分 开机图片比较简单,有个开机图片,图片放在了R.layout.start布局文件中,刚开始老是出现适配问题,后来索性放到LinearLayout的background属性中,然后使用Hnadler创建了一个子线程延时子线程加载后续的跳转Activity(第一次开机跳转功能导航,非第一次跳转主界面)开机的布局文件 R.layout.start(适配比较好) <span style="font-family:Mi

掌上快递 APP 项目之概述篇

概述 学习Android开发也有一段时间了,利用业余时间独立制作的一款快递类APP软件.大概2个多星期吧,自己将其定位为"集快递信息追踪.附近快递点查询. 快递公司投诉功能为一体的便民生活类快递 app".难度不是非常大,主要是是能够锻炼一下自己近来所学的,这个小项目涉及到前端到后台.从数据模型到网络数据解析,还有百度map,为了使側滑效果好看还使用了slidingmenu_library开源库. 主要实现了下面功能: [1]输入快递单号或者扫描二维码 查询快递信息 [2]收藏当前快递

WPF技术触屏上的应用系列(六): 视觉冲击、超炫系统主界面、系统入口效果实现

原文:WPF技术触屏上的应用系列(六): 视觉冲击.超炫系统主界面.系统入口效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上架了,经过努力奋斗最终还是搞定了.当

[应用妹 --第二篇 主界面Tab搭建] android应用市场之快速开发

主界面布局如下 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:la

Android应用主界面底部菜单实现

介绍 现在绝大多数主流的应用主界面,都会包含一个底部菜单,就拿腾讯的QQ与微信来说,看起来是这样的  <---我是底部菜单 原理 在很久以前,可以通过TabActivity实现相关功能,自从Fragment出来后,就被抛弃了. 原理也很简单 1.底部菜单通过自定义RadioGroup实现,通过setOnCheckedChangeListener监听切换内容. 2.内容切换,可以使用ViewPager(可以实现直接滑动切换),TabHost,FragmentManager来实现.. PS:类似的,

android原生browser分析(二)--界面篇

我们先看一张浏览器的主界面,上面标示浏览器界面各部分对应的类,这里是以平板上的界面为例.给张图是为了给大家一个直观的感觉. BrowserActivity是整个应用的主界面,在onCreate中创建了Controller对象,Controller对象是整个应用最重要的管理类,这个后面再说. @Override public void onCreate(Bundle icicle) { mController = createController(); } Controller的创建中新建了UI类

Ogre 编辑器一(MyGUI+Ogre配置与主界面)

在查看Ogre例子时,想看材质要里的纹理,着色器代码都需要每个去查找,非常麻烦.也想看更新每个Ogre里的对象后有什么效果.然后看到Compositor组件与粒子组件时,想到能实时编辑着色器代码实时更新渲染. 开始想着C++做界面麻烦,用C#的winForm做,后面发现首先结合层比较麻烦,然后C#与C++一起调试也会比较麻烦,还有一些比较奇怪的异常也会麻烦.好吧,不如全用C++做,在学习能用在Ogre中的UI时,主要了解了包括Ogre自己的Overlay, CEGUI, MyGUI等等,最终选择