|
|
@@ -2,8 +2,11 @@ package com.usai.apex.saved;
|
|
|
|
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
+import android.content.pm.ApplicationInfo;
|
|
|
import android.database.Cursor;
|
|
|
import android.database.sqlite.SQLiteDatabase;
|
|
|
+import android.graphics.Color;
|
|
|
+import android.graphics.drawable.ColorDrawable;
|
|
|
import android.os.Bundle;
|
|
|
import android.support.v4.app.ListFragment;
|
|
|
import android.text.TextUtils;
|
|
|
@@ -22,6 +25,11 @@ import android.widget.TextView;
|
|
|
|
|
|
import com.usai.apex.ApexTrackingApplication;
|
|
|
import com.usai.apex.R;
|
|
|
+import com.usai.apex.swipemenulistview.BaseSwipListAdapter;
|
|
|
+import com.usai.apex.swipemenulistview.SwipeMenu;
|
|
|
+import com.usai.apex.swipemenulistview.SwipeMenuCreator;
|
|
|
+import com.usai.apex.swipemenulistview.SwipeMenuItem;
|
|
|
+import com.usai.apex.swipemenulistview.SwipeMenuListView;
|
|
|
import com.usai.util.commonUtil;
|
|
|
import com.usai.util.dbUtil;
|
|
|
|
|
|
@@ -35,7 +43,7 @@ import java.util.Iterator;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
-public class SavedSearchFragment extends ListFragment implements OnTouchListener
|
|
|
+public class SavedSearchFragment extends AMListFragment
|
|
|
{
|
|
|
SearchResult searchresult = new SearchResult();
|
|
|
BaseAdapter adapter = null;
|
|
|
@@ -56,9 +64,81 @@ public class SavedSearchFragment extends ListFragment implements OnTouchListener
|
|
|
super.onActivityCreated(savedInstanceState);
|
|
|
adapter = new HistoryAdapter(searchresult, getActivity());
|
|
|
|
|
|
- getListView().setOnTouchListener(this);
|
|
|
+// getListView().setOnTouchListener(this);
|
|
|
setListAdapter(adapter);
|
|
|
// this.getListView().setBackgroundColor(Color.WHITE);
|
|
|
+
|
|
|
+
|
|
|
+ // step 1. create a MenuCreator
|
|
|
+ SwipeMenuCreator creator = new SwipeMenuCreator() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void create(SwipeMenu menu) {
|
|
|
+
|
|
|
+ // create "delete" item
|
|
|
+ SwipeMenuItem deleteItem = new SwipeMenuItem(mContext);
|
|
|
+ // set item background
|
|
|
+ deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,0x3F, 0x25)));
|
|
|
+ // set item width
|
|
|
+ deleteItem.setWidth(dp2px(90));
|
|
|
+ // set a icon
|
|
|
+ deleteItem.setTitle("Delete");
|
|
|
+ // set item title fontsize
|
|
|
+ deleteItem.setTitleSize(18);
|
|
|
+ // set item title font color
|
|
|
+ deleteItem.setTitleColor(Color.WHITE);
|
|
|
+ // add to menu
|
|
|
+ menu.addMenuItem(deleteItem);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ // set creator
|
|
|
+ mSwipeMenuListView.setMenuCreator(creator);
|
|
|
+
|
|
|
+ // step 2. listener item click event
|
|
|
+ mSwipeMenuListView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
|
|
|
+
|
|
|
+
|
|
|
+ switch (index) {
|
|
|
+ case 0:
|
|
|
+ // delete
|
|
|
+ SQLiteDatabase db = dbUtil.OpenDB(getActivity(), null, false);
|
|
|
+ db.execSQL("delete from history where _id=" + (Long) searchresult.getData().get(position).get("_id"));
|
|
|
+ dbUtil.CloseDB(db);
|
|
|
+ searchresult.getData().remove(position);
|
|
|
+ adapter.notifyDataSetChanged();
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // set SwipeListener
|
|
|
+ mSwipeMenuListView.setOnSwipeListener(new SwipeMenuListView.OnSwipeListener() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onSwipeStart(int position) {
|
|
|
+ // swipe start
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onSwipeEnd(int position) {
|
|
|
+ // swipe end
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // set MenuStateChangeListener
|
|
|
+ mSwipeMenuListView.setOnMenuStateChangeListener(new SwipeMenuListView.OnMenuStateChangeListener() {
|
|
|
+ @Override
|
|
|
+ public void onMenuOpen(int position) {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onMenuClose(int position) {
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -113,11 +193,23 @@ public class SavedSearchFragment extends ListFragment implements OnTouchListener
|
|
|
|
|
|
}
|
|
|
|
|
|
- private class HistoryAdapter extends BaseAdapter
|
|
|
+ private class HistoryAdapter extends BaseSwipListAdapter
|
|
|
{
|
|
|
private LayoutInflater mInflater; // 动态布局映射
|
|
|
// private SearchResult result;
|
|
|
|
|
|
+ class Holder {
|
|
|
+ TextView message,time;
|
|
|
+ ImageView icon;
|
|
|
+
|
|
|
+ Holder(View cell) {
|
|
|
+ message = (TextView) cell.findViewById(R.id.tv_msg);// 找某个控件
|
|
|
+ time = (TextView) cell.findViewById(R.id.tv_detail);
|
|
|
+ icon = (ImageView)cell.findViewById(R.id.iv_icon);
|
|
|
+ cell.setTag(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
// private Context context;
|
|
|
// private int i = 0;
|
|
|
public HistoryAdapter(SearchResult result, Context context)
|
|
|
@@ -144,34 +236,28 @@ public class SavedSearchFragment extends ListFragment implements OnTouchListener
|
|
|
public View getView(int position, View convertView, ViewGroup parent)
|
|
|
{
|
|
|
// TODO Auto-generated method stub
|
|
|
- convertView = mInflater.inflate(R.layout.saved_cell, null);// 根据布局文件实例化view
|
|
|
+ Holder holder = null;
|
|
|
+ if (convertView == null) {
|
|
|
+ convertView = mInflater.inflate(R.layout.saved_cell, null);// 根据布局文件实例化view
|
|
|
+ holder = new Holder(convertView);
|
|
|
+ } else {
|
|
|
+ holder = (Holder) convertView.getTag();
|
|
|
+ }
|
|
|
|
|
|
- TextView message = (TextView) convertView
|
|
|
- .findViewById(R.id.tv_msg);// 找某个控件
|
|
|
|
|
|
String name = (String) searchresult.getData().get(position).get("name");
|
|
|
if(TextUtils.isEmpty(name))
|
|
|
{
|
|
|
name = "";
|
|
|
}
|
|
|
- message.setText(name);// 给该控件设置数据(数据从集合类中来)
|
|
|
-
|
|
|
- TextView time = (TextView) convertView.findViewById(R.id.tv_detail);
|
|
|
- time.setText(DateFormat.format(
|
|
|
- getString(R.string.time_format),
|
|
|
- (Long) searchresult.getData().get(position)
|
|
|
- .get("create_time")));
|
|
|
-
|
|
|
-
|
|
|
- ImageView icon = (ImageView)convertView
|
|
|
- .findViewById(R.id.iv_icon);
|
|
|
|
|
|
String module_name = (String) searchresult.getData().get(position).get("module_name");
|
|
|
-// String icon_name="";
|
|
|
-// if(module_name)
|
|
|
int rid=commonUtil.iconName2Rid(getActivity(),module_name);
|
|
|
|
|
|
- icon.setImageResource(rid);
|
|
|
+ holder.message.setText(name);// 给该控件设置数据(数据从集合类中来)
|
|
|
+ holder.time.setText(DateFormat.format(getString(R.string.time_format),(Long) searchresult.getData().get(position).get("create_time")));
|
|
|
+ holder.icon.setImageResource(rid);
|
|
|
+
|
|
|
return convertView;
|
|
|
}
|
|
|
|
|
|
@@ -185,14 +271,19 @@ public class SavedSearchFragment extends ListFragment implements OnTouchListener
|
|
|
public Object getItem(int position)
|
|
|
{
|
|
|
// TODO Auto-generated method stub
|
|
|
- return null;
|
|
|
+ return searchresult.getData().get(position);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public long getItemId(int position)
|
|
|
{
|
|
|
// TODO Auto-generated method stub
|
|
|
- return 0;
|
|
|
+ return position;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean getSwipEnableByPosition(int position) {
|
|
|
+ return true;
|
|
|
}
|
|
|
}
|
|
|
class SearchResult
|
|
|
@@ -235,78 +326,79 @@ public class SavedSearchFragment extends ListFragment implements OnTouchListener
|
|
|
return datalist;
|
|
|
}
|
|
|
}
|
|
|
- @Override
|
|
|
- public boolean onTouch(View v, MotionEvent event)
|
|
|
- {
|
|
|
- switch (event.getAction())
|
|
|
- {
|
|
|
- case MotionEvent.ACTION_DOWN:
|
|
|
- System.out.println("====>>>>>>>>>>>>>>ACTION_DOWN"
|
|
|
- + MotionEvent.ACTION_DOWN);
|
|
|
- // 手指按下,计算焦点位于ListView的那个条目
|
|
|
- pointX = (int) event.getX();
|
|
|
- pointY = (int) event.getY();
|
|
|
- // 备注1
|
|
|
- position = getListView().pointToPosition(pointX, pointY);
|
|
|
- if (curDel_btn != null)
|
|
|
- {
|
|
|
- curDel_btn.setVisibility(View.GONE);
|
|
|
- }
|
|
|
- break;
|
|
|
- case MotionEvent.ACTION_MOVE:
|
|
|
-
|
|
|
- break;
|
|
|
- case MotionEvent.ACTION_UP:
|
|
|
- System.out.println("====>>>>>>>>>>>>>>ACTION_UP"
|
|
|
- + MotionEvent.ACTION_UP);
|
|
|
- endX = (int) event.getX();
|
|
|
- endY = (int) event.getY();
|
|
|
- newpos = getListView().pointToPosition(endX, endY);
|
|
|
- // 原本想着加上这个条件(newpos==position)是不是更精确些,
|
|
|
- // 经过实践发现,其实我们在滑动listView的列表的时候有时候更渴望有滑动就ok
|
|
|
- if (Math.abs(endX - pointX) > 100 && newpos == position
|
|
|
- && Math.abs(endY - pointY) < 100)
|
|
|
- {
|
|
|
- // 获取到ListView第一个可见条目的position
|
|
|
- int firstVisiblePosition = getListView()
|
|
|
- .getFirstVisiblePosition();
|
|
|
-
|
|
|
- // --------------备注2
|
|
|
- View view = getListView().getChildAt(
|
|
|
- position - firstVisiblePosition);
|
|
|
- Button delbtn = (Button) view.findViewById(R.id.btn_del);
|
|
|
- delbtn.setVisibility(View.VISIBLE);
|
|
|
- curDel_btn = delbtn;
|
|
|
- delbtn.setOnClickListener(new View.OnClickListener()
|
|
|
- {
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onClick(View v)
|
|
|
- {
|
|
|
- // TODO Auto-generated method stub
|
|
|
-
|
|
|
- SQLiteDatabase db = dbUtil.OpenDB(
|
|
|
- getActivity(), null, false);
|
|
|
- db.execSQL("delete from history where _id="
|
|
|
- + (Long) searchresult.getData()
|
|
|
- .get(position).get("_id"));
|
|
|
- Log.d("sql delete" + position,
|
|
|
- "delete from push_message where _id="
|
|
|
- + (Long) searchresult.getData()
|
|
|
- .get(position).get("_id"));
|
|
|
-
|
|
|
- dbUtil.CloseDB(db);
|
|
|
- searchresult.getData().remove(position);
|
|
|
- adapter.notifyDataSetChanged();
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- }
|
|
|
- break;
|
|
|
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
+// @Override
|
|
|
+// public boolean onTouch(View v, MotionEvent event)
|
|
|
+// {
|
|
|
+// switch (event.getAction())
|
|
|
+// {
|
|
|
+// case MotionEvent.ACTION_DOWN:
|
|
|
+// System.out.println("====>>>>>>>>>>>>>>ACTION_DOWN"
|
|
|
+// + MotionEvent.ACTION_DOWN);
|
|
|
+// // 手指按下,计算焦点位于ListView的那个条目
|
|
|
+// pointX = (int) event.getX();
|
|
|
+// pointY = (int) event.getY();
|
|
|
+// // 备注1
|
|
|
+// position = getListView().pointToPosition(pointX, pointY);
|
|
|
+// if (curDel_btn != null)
|
|
|
+// {
|
|
|
+// curDel_btn.setVisibility(View.GONE);
|
|
|
+// }
|
|
|
+// break;
|
|
|
+// case MotionEvent.ACTION_MOVE:
|
|
|
+//
|
|
|
+// break;
|
|
|
+// case MotionEvent.ACTION_UP:
|
|
|
+// System.out.println("====>>>>>>>>>>>>>>ACTION_UP"
|
|
|
+// + MotionEvent.ACTION_UP);
|
|
|
+// endX = (int) event.getX();
|
|
|
+// endY = (int) event.getY();
|
|
|
+// newpos = getListView().pointToPosition(endX, endY);
|
|
|
+// // 原本想着加上这个条件(newpos==position)是不是更精确些,
|
|
|
+// // 经过实践发现,其实我们在滑动listView的列表的时候有时候更渴望有滑动就ok
|
|
|
+// if (Math.abs(endX - pointX) > 100 && newpos == position
|
|
|
+// && Math.abs(endY - pointY) < 100)
|
|
|
+// {
|
|
|
+// // 获取到ListView第一个可见条目的position
|
|
|
+// int firstVisiblePosition = getListView()
|
|
|
+// .getFirstVisiblePosition();
|
|
|
+//
|
|
|
+// // --------------备注2
|
|
|
+// View view = getListView().getChildAt(
|
|
|
+// position - firstVisiblePosition);
|
|
|
+// Button delbtn = (Button) view.findViewById(R.id.btn_del);
|
|
|
+// delbtn.setVisibility(View.VISIBLE);
|
|
|
+// curDel_btn = delbtn;
|
|
|
+// delbtn.setOnClickListener(new View.OnClickListener()
|
|
|
+// {
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void onClick(View v)
|
|
|
+// {
|
|
|
+// // TODO Auto-generated method stub
|
|
|
+//
|
|
|
+// SQLiteDatabase db = dbUtil.OpenDB(
|
|
|
+// getActivity(), null, false);
|
|
|
+// db.execSQL("delete from history where _id="
|
|
|
+// + (Long) searchresult.getData()
|
|
|
+// .get(position).get("_id"));
|
|
|
+// Log.d("sql delete" + position,
|
|
|
+// "delete from push_message where _id="
|
|
|
+// + (Long) searchresult.getData()
|
|
|
+// .get(position).get("_id"));
|
|
|
+//
|
|
|
+// dbUtil.CloseDB(db);
|
|
|
+// searchresult.getData().remove(position);
|
|
|
+// adapter.notifyDataSetChanged();
|
|
|
+// }
|
|
|
+// });
|
|
|
+//
|
|
|
+// }
|
|
|
+// break;
|
|
|
+//
|
|
|
+// default:
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// return false;
|
|
|
+// }
|
|
|
}
|