|
@@ -6,7 +6,6 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
|
import android.os.Handler;
|
|
import android.os.Handler;
|
|
import android.os.Looper;
|
|
import android.os.Looper;
|
|
import android.os.Message;
|
|
import android.os.Message;
|
|
-import android.util.Log;
|
|
|
|
import android.view.View;
|
|
import android.view.View;
|
|
import android.widget.EditText;
|
|
import android.widget.EditText;
|
|
import android.widget.ImageView;
|
|
import android.widget.ImageView;
|
|
@@ -14,25 +13,21 @@ import android.widget.LinearLayout;
|
|
import android.widget.TextView;
|
|
import android.widget.TextView;
|
|
|
|
|
|
import com.example.datalibrary.api.FaceApi;
|
|
import com.example.datalibrary.api.FaceApi;
|
|
-import com.example.datalibrary.manager.FaceSDKManager;
|
|
|
|
import com.example.datalibrary.model.KeyboardsUtils;
|
|
import com.example.datalibrary.model.KeyboardsUtils;
|
|
import com.example.datalibrary.model.User;
|
|
import com.example.datalibrary.model.User;
|
|
-import com.google.gson.Gson;
|
|
|
|
import com.hanghui.senic.R;
|
|
import com.hanghui.senic.R;
|
|
import com.hanghui.senic.activity.BaseActivity;
|
|
import com.hanghui.senic.activity.BaseActivity;
|
|
import com.hanghui.senic.adapter.PersonnelDataAdapter;
|
|
import com.hanghui.senic.adapter.PersonnelDataAdapter;
|
|
-import com.hanghui.senic.common.AppHandler;
|
|
|
|
import com.hanghui.senic.common.CommonUtil;
|
|
import com.hanghui.senic.common.CommonUtil;
|
|
-import com.hanghui.senic.service.usbserialdemo.utile.ConfigManager;
|
|
|
|
import com.hanghui.senic.service.usbserialdemo.utile.StringIsNull;
|
|
import com.hanghui.senic.service.usbserialdemo.utile.StringIsNull;
|
|
-import com.hanghui.senic.service.usbserialdemo.utile.loacat.AppLogUtils;
|
|
|
|
import com.jcodecraeer.xrecyclerview.XRecyclerView;
|
|
import com.jcodecraeer.xrecyclerview.XRecyclerView;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
-import java.util.Collection;
|
|
|
|
import java.util.Iterator;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
-import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
|
+import java.util.concurrent.Executors;
|
|
|
|
+import java.util.concurrent.Future;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 人员数据
|
|
* 人员数据
|
|
@@ -47,7 +42,7 @@ public class PersonnelDataActivity extends BaseActivity implements View.OnClickL
|
|
private TextView personnelData_inquireText;
|
|
private TextView personnelData_inquireText;
|
|
private LinearLayout personnelData_queryCondition_Linear;
|
|
private LinearLayout personnelData_queryCondition_Linear;
|
|
private XRecyclerView personnelData_RecyclerView;
|
|
private XRecyclerView personnelData_RecyclerView;
|
|
- private PersonnelDataAdapter personnelDataAdapter;
|
|
|
|
|
|
+ private PersonnelDataAdapter mAdapter;
|
|
|
|
|
|
private boolean isShow = false;//是否显示筛选条件
|
|
private boolean isShow = false;//是否显示筛选条件
|
|
private EditText personnelData_inputID;
|
|
private EditText personnelData_inputID;
|
|
@@ -58,25 +53,46 @@ public class PersonnelDataActivity extends BaseActivity implements View.OnClickL
|
|
private TextView personnelData_input_empty;//清空按钮
|
|
private TextView personnelData_input_empty;//清空按钮
|
|
private TextView personnelData_input_search;//搜索按钮
|
|
private TextView personnelData_input_search;//搜索按钮
|
|
// private List<User> userList = new ArrayList<>();
|
|
// private List<User> userList = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ private ExecutorService es3 = Executors.newSingleThreadExecutor();
|
|
|
|
+ private Future future3;
|
|
|
|
+
|
|
private List<User> dataList;
|
|
private List<User> dataList;
|
|
- private int totalSize=0;
|
|
|
|
|
|
+ private volatile int totalSize=0;
|
|
private final int WHAT_REFRESH=0x01;
|
|
private final int WHAT_REFRESH=0x01;
|
|
|
|
+
|
|
|
|
+ private volatile boolean isSearching=false;
|
|
|
|
+
|
|
|
|
+
|
|
private Handler mHandler=new Handler(Looper.getMainLooper()){
|
|
private Handler mHandler=new Handler(Looper.getMainLooper()){
|
|
@Override
|
|
@Override
|
|
public void handleMessage(@NonNull Message msg) {
|
|
public void handleMessage(@NonNull Message msg) {
|
|
super.handleMessage(msg);
|
|
super.handleMessage(msg);
|
|
if(WHAT_REFRESH==msg.what){
|
|
if(WHAT_REFRESH==msg.what){
|
|
- if(dataList.size()>totalSize){
|
|
|
|
- if(personnelDataAdapter!=null){
|
|
|
|
- personnelDataAdapter.notifyDataSetChanged();
|
|
|
|
- totalSize=dataList.size();
|
|
|
|
- if(setUPIncloud_title!=null) {
|
|
|
|
- setUPIncloud_title.setText("人员数据(" + totalSize + ")");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ if (future3 != null && !future3.isDone()) {
|
|
|
|
+ removeMessages(WHAT_REFRESH);
|
|
|
|
+ sendEmptyMessageDelayed(WHAT_REFRESH,1000);
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
- mHandler.removeMessages(WHAT_REFRESH);
|
|
|
|
- mHandler.sendEmptyMessageDelayed(WHAT_REFRESH,1000);
|
|
|
|
|
|
+ future3 = es3.submit(() -> {
|
|
|
|
+ dataList = FaceApi.getInstance().getUsers();
|
|
|
|
+ final int tempTotalSize = dataList.size();
|
|
|
|
+ post(() -> {
|
|
|
|
+ if (!isSearching && mAdapter != null) {
|
|
|
|
+ mAdapter.setList(dataList);
|
|
|
|
+ mAdapter.notifyDataSetChanged();
|
|
|
|
+ if (dataList != null && tempTotalSize > totalSize) {
|
|
|
|
+ totalSize=tempTotalSize;
|
|
|
|
+ if(setUPIncloud_title!=null) {
|
|
|
|
+ setUPIncloud_title.setText("人员数据(" + totalSize + ")");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ removeMessages(WHAT_REFRESH);
|
|
|
|
+ sendEmptyMessageDelayed(WHAT_REFRESH,1000);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
};
|
|
@@ -88,8 +104,6 @@ public class PersonnelDataActivity extends BaseActivity implements View.OnClickL
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void setOnCreate() {
|
|
public void setOnCreate() {
|
|
- dataList=FaceApi.getInstance().getUsers();
|
|
|
|
- totalSize=dataList.size();
|
|
|
|
initView();
|
|
initView();
|
|
mHandler.sendEmptyMessageDelayed(WHAT_REFRESH,1000);
|
|
mHandler.sendEmptyMessageDelayed(WHAT_REFRESH,1000);
|
|
}
|
|
}
|
|
@@ -97,7 +111,11 @@ public class PersonnelDataActivity extends BaseActivity implements View.OnClickL
|
|
@Override
|
|
@Override
|
|
protected void onDestroy() {
|
|
protected void onDestroy() {
|
|
super.onDestroy();
|
|
super.onDestroy();
|
|
- if(mHandler!=null){
|
|
|
|
|
|
+ if (future3 != null && !future3.isDone()) {
|
|
|
|
+ future3.cancel(true);
|
|
|
|
+ future3 = null;
|
|
|
|
+ }
|
|
|
|
+ if (mHandler != null) {
|
|
mHandler.removeCallbacksAndMessages(null);
|
|
mHandler.removeCallbacksAndMessages(null);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -105,7 +123,7 @@ public class PersonnelDataActivity extends BaseActivity implements View.OnClickL
|
|
|
|
|
|
private void initView() {
|
|
private void initView() {
|
|
setUPIncloud_title = findViewById(R.id.setUPIncloud_title);
|
|
setUPIncloud_title = findViewById(R.id.setUPIncloud_title);
|
|
- setUPIncloud_title.setText("人员数据("+totalSize+")");
|
|
|
|
|
|
+ setUPIncloud_title.setText("人员数据(...)");
|
|
setUPIncloud_finish = findViewById(R.id.setUPIncloud_finish);
|
|
setUPIncloud_finish = findViewById(R.id.setUPIncloud_finish);
|
|
setUPIncloud_finish.setOnClickListener(this);
|
|
setUPIncloud_finish.setOnClickListener(this);
|
|
personnelData_inquire = findViewById(R.id.personnelData_inquire);
|
|
personnelData_inquire = findViewById(R.id.personnelData_inquire);
|
|
@@ -126,8 +144,9 @@ public class PersonnelDataActivity extends BaseActivity implements View.OnClickL
|
|
LinearLayoutManager manager = new LinearLayoutManager(CommonUtil.getCurrentActivity());
|
|
LinearLayoutManager manager = new LinearLayoutManager(CommonUtil.getCurrentActivity());
|
|
manager.setOrientation(LinearLayoutManager.VERTICAL);
|
|
manager.setOrientation(LinearLayoutManager.VERTICAL);
|
|
personnelData_RecyclerView.setLayoutManager(manager);
|
|
personnelData_RecyclerView.setLayoutManager(manager);
|
|
- personnelDataAdapter = new PersonnelDataAdapter(dataList, PersonnelDataActivity.this);
|
|
|
|
- personnelData_RecyclerView.setAdapter(personnelDataAdapter);
|
|
|
|
|
|
+ mAdapter = new PersonnelDataAdapter(dataList == null ? new ArrayList<>() : dataList
|
|
|
|
+ , PersonnelDataActivity.this);
|
|
|
|
+ personnelData_RecyclerView.setAdapter(mAdapter);
|
|
personnelData_RecyclerView.setPullRefreshEnabled(false);//禁止下拉刷新
|
|
personnelData_RecyclerView.setPullRefreshEnabled(false);//禁止下拉刷新
|
|
|
|
|
|
}
|
|
}
|
|
@@ -169,7 +188,7 @@ public class PersonnelDataActivity extends BaseActivity implements View.OnClickL
|
|
KeyboardsUtils.hintKeyBoards(personnelData_inquire);
|
|
KeyboardsUtils.hintKeyBoards(personnelData_inquire);
|
|
try {
|
|
try {
|
|
personnelData_input_search.setEnabled(false);
|
|
personnelData_input_search.setEnabled(false);
|
|
- personnelDataAdapter.setList(searchList(id,cardNumber,name,idNumber,phone));
|
|
|
|
|
|
+ mAdapter.setList(searchList(id,cardNumber,name,idNumber,phone));
|
|
personnelData_RecyclerView.scrollToPosition(0);
|
|
personnelData_RecyclerView.scrollToPosition(0);
|
|
}catch (Exception e){
|
|
}catch (Exception e){
|
|
|
|
|
|
@@ -186,10 +205,11 @@ public class PersonnelDataActivity extends BaseActivity implements View.OnClickL
|
|
&& StringIsNull.IsStringNull(idNumber) && StringIsNull.IsStringNull(phone)){
|
|
&& StringIsNull.IsStringNull(idNumber) && StringIsNull.IsStringNull(phone)){
|
|
mHandler.removeMessages(WHAT_REFRESH);
|
|
mHandler.removeMessages(WHAT_REFRESH);
|
|
mHandler.sendEmptyMessageDelayed(WHAT_REFRESH,1000);
|
|
mHandler.sendEmptyMessageDelayed(WHAT_REFRESH,1000);
|
|
|
|
+ isSearching = false;
|
|
return dataList;
|
|
return dataList;
|
|
}
|
|
}
|
|
List<User> itemList = new ArrayList<>();
|
|
List<User> itemList = new ArrayList<>();
|
|
- if(dataList==null){
|
|
|
|
|
|
+ if (dataList == null) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
List<User> tempDataList = new ArrayList<>();
|
|
List<User> tempDataList = new ArrayList<>();
|
|
@@ -229,6 +249,7 @@ public class PersonnelDataActivity extends BaseActivity implements View.OnClickL
|
|
|
|
|
|
}
|
|
}
|
|
mHandler.removeMessages(WHAT_REFRESH);
|
|
mHandler.removeMessages(WHAT_REFRESH);
|
|
|
|
+ isSearching = true;
|
|
if(setUPIncloud_title!=null) {
|
|
if(setUPIncloud_title!=null) {
|
|
setUPIncloud_title.setText("人员数据(" + itemList.size() + ")");
|
|
setUPIncloud_title.setText("人员数据(" + itemList.size() + ")");
|
|
}
|
|
}
|