Kaynağa Gözat

任务记录,添加筛选

liujiangyao 8 yıl önce
ebeveyn
işleme
f786103778

+ 2 - 2
app/src/main/java/com/sheep/jiuyan/samllsheep/Config.java

@@ -18,10 +18,10 @@ public class Config {
     //        public String mBaseUrl = "http://10.8.220.213:8088";
     //    public String mBaseUrl = "http://10.8.220.130:8088";
     //何威
-    public String mBaseUrl = "http://10.8.220.6:8088";
+//    public String mBaseUrl = "http://10.8.220.6:8088";
 //张伟
 // public String mBaseUrl = "http://10.8.220.132:8088";
-//   public String mBaseUrl = "http://api.task.bandaimi.com";
+   public String mBaseUrl = "http://api.task.bandaimi.com";
 //    public String mBaseUrl = "http://test.ss.shouyouquan.com";
     public final static String WX_APPID = "wx3c0376c4fcc8b723";
     public final static String BUGLY_APPID = "0dd998212c";

+ 140 - 52
app/src/main/java/com/sheep/jiuyan/samllsheep/page/TaskRecordActivity.java

@@ -2,13 +2,19 @@ package com.sheep.jiuyan.samllsheep.page;
 
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.Message;
 import android.support.v7.app.AlertDialog;
 import android.text.TextUtils;
 import android.text.format.DateFormat;
+import android.view.Gravity;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.ListView;
+import android.widget.PopupWindow;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -19,6 +25,7 @@ import com.sheep.jiuyan.samllsheep.net.NetManager;
 import com.sheep.jiuyan.samllsheep.net.SheepCallback;
 import com.sheep.jiuyan.samllsheep.net.Url;
 import com.sheep.jiuyan.samllsheep.page.entry.Commit;
+import com.sheep.jiuyan.samllsheep.page.view.MyPopupWindow;
 import com.sheep.jiuyan.samllsheep.utils.DeviceUtils;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
@@ -27,6 +34,7 @@ import com.zhy.adapter.abslistview.CommonAdapter;
 import com.zhy.adapter.abslistview.ViewHolder;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -36,11 +44,44 @@ import java.util.List;
  */
 
 public class TaskRecordActivity extends BaseActivity {
+
+    public static final int REFRESH_ADAPTER = 1;
+    public static final int REFRESH_IMAGEVIEW = 0;
+
     private ListView mLvTask;
     private CommonAdapter mAdapter;
     private List<Commit> mCommits;
+    private List<Commit> mCommitsStatus = new ArrayList<>();;
     private AlertDialog mDialog;
     private AlertDialog mReDialog;
+    private PopupWindow popupWindow;
+    private TextView tv_linearLayout_baseactivity_right;
+    private ArrayList<String> dateList = new ArrayList<>();
+    private LinearLayout linearLayout_baseactivity_right;
+    private ImageView iv_linearLayout_baseactivity_right;
+    private int status = 0;//commit:Status 1(未审核),2(通过),3(未通过)
+
+    Handler mhandler = new Handler(){
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            try{
+                switch (msg.what){
+                    case REFRESH_IMAGEVIEW:
+                        MyPopupWindow.newInstance().setSelectOr(TaskRecordActivity.this, iv_linearLayout_baseactivity_right, (Boolean) msg.obj);
+
+                        break;
+                    case REFRESH_ADAPTER:
+                        status = (int) msg.obj;
+                        tv_linearLayout_baseactivity_right.setText(dateList.get(status));
+                        filtrate(status);
+                        break;
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+    };
 
     @Override
     protected int getLayoutId() {
@@ -49,8 +90,14 @@ public class TaskRecordActivity extends BaseActivity {
 
     @Override
     public void initView() {
+        linearLayout_baseactivity_right = findViewById(R.id.linearLayout_baseactivity_right);
         mLvTask = (ListView) findViewById(R.id.lv_task);
         mLvTask.setDividerHeight(0);
+        tv_linearLayout_baseactivity_right = findViewById(R.id.tv_linearLayout_baseactivity_right);
+        iv_linearLayout_baseactivity_right = findViewById(R.id.iv_linearLayout_baseactivity_right);
+        linearLayout_baseactivity_right.setVisibility(View.VISIBLE);
+
+        MyPopupWindow.newInstance().setSelectOr(TaskRecordActivity.this, iv_linearLayout_baseactivity_right, false);
     }
 
     @Override
@@ -58,7 +105,7 @@ public class TaskRecordActivity extends BaseActivity {
         mLvTask.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                final Commit commit = mCommits.get(position);
+                final Commit commit = mCommitsStatus.get(position);
                 if (mDialog == null) {
                     mDialog = new AlertDialog.Builder(TaskRecordActivity.this)
                             .setPositiveButton("确定", new DialogInterface.OnClickListener() {
@@ -79,6 +126,23 @@ public class TaskRecordActivity extends BaseActivity {
             }
         });
 
+        //右按钮
+        linearLayout_baseactivity_right.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Message m = new Message();
+                // 使用isShowing()检查popup窗口是否在显示状态
+                if (popupWindow != null && !popupWindow.isShowing()) {
+                    popupWindow.showAsDropDown(tv_linearLayout_baseactivity_right, 0, -1);
+                    m.obj = true;
+                }else{
+                    m.obj = false;
+                }
+
+                m.what = REFRESH_IMAGEVIEW;
+                mhandler.sendMessage(m);
+            }
+        });
     }
 
     private void dispatch(final Commit commit) {
@@ -203,57 +267,8 @@ public class TaskRecordActivity extends BaseActivity {
             public void success(List<Commit> commits) {
                 hideProgress();
                 mCommits = commits;
-                if (mAdapter == null)
-                    mLvTask.setAdapter(mAdapter = new CommonAdapter<Commit>(TaskRecordActivity.this, R.layout.task_record_item, commits) {
-                        @Override
-                        protected void convert(ViewHolder viewHolder, Commit item, int position) {
-                            String time = null;
-                            try {
-                                String[] tmp1 = item.getCreateTime().split("-");
-                                String[] tmp2 = tmp1[2].split(" ")[1].split(":");
-                                time = tmp1[1] + "/" + tmp1[2].split(" ")[0] + "\n" + tmp2[0] + ":" + tmp2[1];
-                            } catch (Exception e) {
-                                e.printStackTrace();
-                            }
-                            viewHolder.setText(R.id.tv_time, time);
-                            getState(viewHolder.<TextView>getView(R.id.tv_state), item.getStatus());
-                            viewHolder.setText(R.id.txt_baseactivity_title, item.getTask().getTitle());
-                            Glide.with(TaskRecordActivity.this)
-                                    .load(item.getTask().getIcon())
-                                    .placeholder(R.drawable.icon)
-                                    .dontAnimate()
-                                    .into(viewHolder.<ImageView>getView(R.id.img_icon));
-                            String strMoney=TextUtils.isEmpty(item.getCompleteMoney())?item.getTask().getPrice():item.getCompleteMoney();
-                            viewHolder.setText(R.id.tv_money, "¥" + strMoney);
-                            TextView failed = viewHolder.getView(R.id.tv_failed);
-                            if (!TextUtils.isEmpty(item.getFailDesc())) {
-                                failed.setVisibility(View.VISIBLE);
-                                failed.setText(item.getFailDesc());
-                            } else {
-                                failed.setVisibility(View.GONE);
-                            }
-                        }
-
-                        private void getState(TextView view, int state) {
-                            switch (state) {
-                                case 1:
-                                    view.setText("审核中");
-                                    view.setBackgroundResource(R.drawable.sp_btn_common);
-                                    break;
-                                case 2:
-                                    view.setText("已审核");
-                                    view.setBackgroundResource(R.drawable.sp_btn_common_green);
-                                    break;
-                                case 3:
-                                    view.setText("未通过");
-                                    view.setBackgroundResource(R.drawable.sp_btn_common_orange);
-                                    break;
-                            }
-                        }
-                    });
-                else {
-                    mAdapter.notifyDataSetChanged();
-                }
+                filtrate(status);
+                mAdapter.notifyDataSetChanged();
             }
 
             @Override
@@ -262,6 +277,79 @@ public class TaskRecordActivity extends BaseActivity {
                 hideProgress();
             }
         });
+        mAdapter = new CommonAdapter<Commit>(TaskRecordActivity.this, R.layout.task_record_item, mCommitsStatus) {
+            @Override
+            protected void convert(ViewHolder viewHolder, Commit item, int position) {
+                String time = null;
+                try {
+                    String[] tmp1 = item.getCreateTime().split("-");
+                    String[] tmp2 = tmp1[2].split(" ")[1].split(":");
+                    time = tmp1[1] + "/" + tmp1[2].split(" ")[0] + "\n" + tmp2[0] + ":" + tmp2[1];
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                viewHolder.setText(R.id.tv_time, time);
+                getState(viewHolder.<TextView>getView(R.id.tv_state), item.getStatus());
+                viewHolder.setText(R.id.txt_baseactivity_title, item.getTask().getTitle());
+                Glide.with(TaskRecordActivity.this)
+                        .load(item.getTask().getIcon())
+                        .placeholder(R.drawable.icon)
+                        .dontAnimate()
+                        .into(viewHolder.<ImageView>getView(R.id.img_icon));
+                String strMoney=TextUtils.isEmpty(item.getCompleteMoney())?item.getTask().getPrice():item.getCompleteMoney();
+                viewHolder.setText(R.id.tv_money, "¥" + strMoney);
+                TextView failed = viewHolder.getView(R.id.tv_failed);
+                if (!TextUtils.isEmpty(item.getFailDesc())) {
+                    failed.setVisibility(View.VISIBLE);
+                    failed.setText(item.getFailDesc());
+                } else {
+                    failed.setVisibility(View.GONE);
+                }
+            }
+
+            private void getState(TextView view, int state) {
+                switch (state) {
+                    case 1:
+                        view.setText("审核中");
+                        view.setBackgroundResource(R.drawable.sp_btn_common);
+                        break;
+                    case 2:
+                        view.setText("已审核");
+                        view.setBackgroundResource(R.drawable.sp_btn_common_green);
+                        break;
+                    case 3:
+                        view.setText("未通过");
+                        view.setBackgroundResource(R.drawable.sp_btn_common_orange);
+                        break;
+                }
+            }
+        };
+        mLvTask.setAdapter(mAdapter);
+
+        //popupwindow 刷选列表
+        dateList.clear();
+        dateList.add(" 全部 ");
+        dateList.add("审核中");
+        dateList.add("已审核");
+        dateList.add("未通过");
+        tv_linearLayout_baseactivity_right.setText(dateList.get(0));
+        popupWindow = MyPopupWindow.newInstance().getPopupWindow(this, dateList, tv_linearLayout_baseactivity_right, mhandler);
     }
 
+    /**
+     * 筛选 date
+     */
+    private void filtrate(int status){
+
+        mCommitsStatus.clear();
+        if(status == 0){
+            mCommitsStatus.addAll(mCommits);
+        }
+        for(Commit c: mCommits){
+            if(c.getStatus() == status){
+                mCommitsStatus.add(c);
+            }
+        }
+        mAdapter.notifyDataSetChanged();
+    }
 }

+ 103 - 0
app/src/main/java/com/sheep/jiuyan/samllsheep/page/view/MyPopupWindow.java

@@ -0,0 +1,103 @@
+package com.sheep.jiuyan.samllsheep.page.view;
+
+import android.app.ActionBar;
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.Message;
+import android.support.v4.content.ContextCompat;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.page.TaskRecordActivity;
+
+import java.util.ArrayList;
+
+/**
+ * 任务列表里面的筛选
+ * Created by ljy on 2018/2/11.
+ */
+
+public class MyPopupWindow extends PopupWindow {
+    static MyPopupWindow myPopupWindow;
+
+    public static MyPopupWindow newInstance(){
+        if(myPopupWindow == null){
+            myPopupWindow = new MyPopupWindow();
+        }
+        return myPopupWindow;
+    }
+
+
+    public PopupWindow getPopupWindow(final Context context, final ArrayList<String> dateList, final TextView mSelectTv, final Handler mhandler){
+        ListView mTypeLv = new ListView(context);
+        // 设置适配器
+        ArrayAdapter testDataAdapter = new ArrayAdapter<String>(context, R.layout.popup_text_item1, dateList);
+        mTypeLv.setAdapter(testDataAdapter);
+        mTypeLv.setDivider(new ColorDrawable(Color.GRAY));
+        mTypeLv.setDividerHeight(1);
+        int w = mSelectTv.getWidth();
+        if(w < 190){
+            w = 190;
+        }
+        final PopupWindow typeSelectPopup = new PopupWindow(mTypeLv, w, ActionBar.LayoutParams.WRAP_CONTENT, true);
+        // 取得popup窗口的背景图片
+        Drawable drawable = ContextCompat.getDrawable(context, R.drawable.bg_corner_popup);
+        typeSelectPopup.setBackgroundDrawable(drawable);
+        typeSelectPopup.setFocusable(true);
+        typeSelectPopup.setOutsideTouchable(true);
+        typeSelectPopup.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                // 关闭popup窗口
+                typeSelectPopup.dismiss();
+                Message m = new Message();
+                m.what = TaskRecordActivity.REFRESH_IMAGEVIEW;
+                m.obj = false;
+                mhandler.sendMessage(m);
+            }
+        });
+
+        // 设置ListView点击事件监听
+        mTypeLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                // 在这里获取item数据
+                String value = dateList.get(position);
+                // 把选择的数据展示对应的TextView上
+//                mSelectTv.setText(value);
+
+                // 选择完后关闭popup窗口
+                typeSelectPopup.dismiss();
+                Message m = new Message();
+                m.what = TaskRecordActivity.REFRESH_ADAPTER;
+                m.obj = position;
+                mhandler.sendMessage(m);
+            }
+        });
+        return typeSelectPopup;
+    }
+
+    /**
+     * 被选中状态
+     */
+    public void setSelectOr(Context context, ImageView textView, boolean isSelect){
+        int drawableResources = R.mipmap.triangle_popup_nomal;
+        if(isSelect){
+            drawableResources = R.mipmap.triangle_popup_select;
+        }else {
+            drawableResources = R.mipmap.triangle_popup_nomal;
+        }
+        Drawable drawable = context.getResources().getDrawable(drawableResources);
+        drawable .setBounds(0,0,0,0);
+        textView.setImageResource(drawableResources);
+    }
+}

+ 7 - 0
app/src/main/res/drawable/bg_corner_popup.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <!--设置背景颜色-->
+    <solid android:color="@color/colorPrimary" />
+    <!-- 设置圆角角度 -->
+    <corners android:radius="2dp" />
+</shape>

+ 11 - 0
app/src/main/res/layout/popup_text_item1.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center"
+    android:textColor="@android:color/black"
+    android:text=""
+    android:padding="5dp"
+    android:lines="1">
+
+</TextView>

+ 30 - 3
app/src/main/res/layout/title.xml

@@ -32,14 +32,14 @@
         style="?android:attr/borderlessButtonStyle"
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
-        android:layout_alignParentRight="true"
-        android:layout_centerVertical="true"
         android:layout_marginRight="5dp"
         android:background="@color/translate"
         android:gravity="center"
         android:minWidth="@dimen/layout_heigh_default"
         android:textColor="@color/black_text_deep"
-        android:textSize="@dimen/text_size_3"/>
+        android:textSize="@dimen/text_size_3"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentEnd="true" />
     <!--右边图片按钮-->
     <ImageButton
         android:id="@+id/ibtn_baseactivity_right"
@@ -63,4 +63,31 @@
         android:text="如何做任务?"
         android:textColor="@color/sheep_red"
         android:visibility="gone"/>
+
+    <LinearLayout
+        android:id="@+id/linearLayout_baseactivity_right"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true"
+        android:background="@color/translate"
+        android:gravity="center"
+        android:minWidth="@dimen/layout_heigh_default"
+        android:orientation="horizontal"
+        android:visibility="gone"
+        android:layout_marginRight="@dimen/content_padding">
+        <TextView
+            android:id="@+id/tv_linearLayout_baseactivity_right"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text=""
+            android:textSize="@dimen/text_size_4"
+            android:textColor="@android:color/black"
+            android:paddingRight="5dp"/>
+        <ImageView
+            android:id="@+id/iv_linearLayout_baseactivity_right"
+            android:layout_width="12dp"
+            android:layout_height="12dp"
+            android:src="@mipmap/triangle_popup_nomal"/>
+    </LinearLayout>
 </RelativeLayout>

BIN
app/src/main/res/mipmap-xhdpi/triangle_popup_nomal.png


BIN
app/src/main/res/mipmap-xhdpi/triangle_popup_select.png