|
|
@@ -11,7 +11,6 @@ import android.view.ViewGroup;
|
|
|
import android.widget.AdapterView;
|
|
|
import android.widget.BaseAdapter;
|
|
|
import android.widget.ImageView;
|
|
|
-import android.widget.ListView;
|
|
|
import android.widget.TextView;
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
@@ -20,14 +19,16 @@ import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.fastjson.TypeReference;
|
|
|
import com.common.LogUtil;
|
|
|
+import com.common.data.ListUtils;
|
|
|
import com.common.data.StringUtil;
|
|
|
import com.common.system.SystemUtil;
|
|
|
import com.core.app.MyApplication;
|
|
|
import com.core.utils.CommonUtil;
|
|
|
import com.core.utils.NotifyUtils;
|
|
|
+import com.core.utils.sortlist.BaseComparator;
|
|
|
+import com.core.utils.sortlist.BaseSortModel;
|
|
|
+import com.core.utils.sortlist.PingYinUtil;
|
|
|
import com.core.utils.sortlist.SideBar;
|
|
|
-import com.handmark.pulltorefresh.library.PullToRefreshBase;
|
|
|
-import com.handmark.pulltorefresh.library.PullToRefreshListView;
|
|
|
import com.me.network.app.http.HttpClient;
|
|
|
import com.me.network.app.http.Method;
|
|
|
import com.me.network.app.http.rx.ResultListener;
|
|
|
@@ -37,16 +38,20 @@ import com.modular.apputils.network.Tags;
|
|
|
import com.uas.appworks.R;
|
|
|
import com.uas.appworks.crm3_0.activity.ContactDynamicAddActivity;
|
|
|
import com.uas.appworks.crm3_0.activity.ContactsDetialActivity;
|
|
|
+import com.uas.appworks.crm3_0.adapter.ContactSortAdapter;
|
|
|
import com.uas.appworks.crm3_0.adapter.DynamicAdapter;
|
|
|
import com.uas.appworks.crm3_0.model.ColumnModel;
|
|
|
import com.uas.appworks.crm3_0.model.ContactsBean;
|
|
|
import com.uas.appworks.crm3_0.model.ItemModel;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
+import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
|
|
|
+
|
|
|
/**
|
|
|
* @desc:联系人列表
|
|
|
* @author:Arison on 2018/9/13
|
|
|
@@ -55,10 +60,16 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
,SideBar.OnTouchingLetterChangedListener{
|
|
|
|
|
|
|
|
|
- private PullToRefreshListView mListView;
|
|
|
+// private PullToRefreshListView mListView;
|
|
|
private int tabItem;
|
|
|
List<ContactsBean> datas;
|
|
|
ItemContactsMeAdapter adapter;
|
|
|
+
|
|
|
+
|
|
|
+ StickyListHeadersListView refreshListView;
|
|
|
+ private BaseComparator comparator;
|
|
|
+ private List<BaseSortModel<ContactsBean>> allDatas=new ArrayList<>();
|
|
|
+ ContactSortAdapter mAdapter;
|
|
|
private static final String TAG = "ContactsListFragment";
|
|
|
private int page;
|
|
|
|
|
|
@@ -90,8 +101,8 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
|
|
|
@Override
|
|
|
public void run() {
|
|
|
- if (mListView!=null) {
|
|
|
- mListView.setRefreshing(true);
|
|
|
+ if (refreshListView!=null) {
|
|
|
+ initData();
|
|
|
}
|
|
|
}
|
|
|
}, 200);
|
|
|
@@ -100,36 +111,14 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
private void initView() {
|
|
|
tabItem = getArguments().getInt("tabItem", 0);
|
|
|
LogUtil.d(TAG,"layzData():"+tabItem);
|
|
|
- dialogTV = (TextView) findViewById(R.id.dialogTV);
|
|
|
- sideBar = (SideBar) findViewById(R.id.sidebar);
|
|
|
- sideBar.setTextView(dialogTV);
|
|
|
- sideBar.setOnTouchingLetterChangedListener(this);
|
|
|
-
|
|
|
- mListView = findViewById(R.id.mListView);
|
|
|
- mListView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
|
|
|
- mListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
|
|
|
- @Override
|
|
|
- public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
|
|
|
- LogUtil.d(TAG,"下拉刷新.....");
|
|
|
- page = 1;
|
|
|
- initData();
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
|
|
|
- LogUtil.d(TAG,"加载更多.....");
|
|
|
- page++;
|
|
|
- loadMore();
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
- mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
+ refreshListView = findViewById(R.id.mListView);
|
|
|
+ refreshListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
@Override
|
|
|
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
|
|
switch (tabItem){
|
|
|
case 1:
|
|
|
- final ItemContactsMeAdapter.ViewHolder viewHolder= (ItemContactsMeAdapter.ViewHolder) view.getTag();
|
|
|
+ final ContactSortAdapter.ViewHolder viewHolder= (ContactSortAdapter.ViewHolder) view.getTag();
|
|
|
if (StringUtil.isEmpty(viewHolder.bean.getCompanyName())){
|
|
|
viewHolder.bean.setCompanyName("未填写");
|
|
|
}
|
|
|
@@ -145,7 +134,7 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
getActivity().startActivity(new Intent(getActivity(), ContactsDetialActivity.class)
|
|
|
.putExtra("model",viewHolder.bean));
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 2:
|
|
|
DynamicAdapter.ViewHolder model= (DynamicAdapter.ViewHolder) view.getTag();
|
|
|
Toast.makeText(getActivity(),model.columnModel.getId(),Toast.LENGTH_LONG).show();
|
|
|
@@ -157,11 +146,46 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
.putExtra("id", Integer.valueOf(model.columnModel.getId())));
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+ mAdapter = new ContactSortAdapter(ct, allDatas);
|
|
|
+ refreshListView.setAdapter(mAdapter);
|
|
|
+
|
|
|
+ dialogTV = (TextView) findViewById(R.id.dialogTV);
|
|
|
+ sideBar = (SideBar) findViewById(R.id.sidebar);
|
|
|
+ sideBar.setTextView(dialogTV);
|
|
|
+ sideBar.setOnTouchingLetterChangedListener(this);
|
|
|
+ comparator = new BaseComparator();
|
|
|
+
|
|
|
+// mListView = findViewById(R.id.mListView);
|
|
|
+// mListView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
|
|
|
+// mListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
|
|
|
+// @Override
|
|
|
+// public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
|
|
|
+// LogUtil.d(TAG,"下拉刷新.....");
|
|
|
+// page = 1;
|
|
|
+// initData();
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
|
|
|
+// LogUtil.d(TAG,"加载更多.....");
|
|
|
+// page++;
|
|
|
+// loadMore();
|
|
|
+// }
|
|
|
+// });
|
|
|
+
|
|
|
+
|
|
|
+// mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
+// @Override
|
|
|
+// public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
|
|
+//
|
|
|
+//
|
|
|
+// }
|
|
|
+// });
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void initData(){
|
|
|
@@ -180,11 +204,16 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
@Override
|
|
|
public void onResponse(Object o) {
|
|
|
try {
|
|
|
+ allDatas.clear();
|
|
|
datas= JSON.parseObject(JSON.parseObject(o.toString()).getJSONArray("data").toJSONString()
|
|
|
,new TypeReference<List<ContactsBean>>(){});
|
|
|
- adapter=new ItemContactsMeAdapter(getActivity(),datas);
|
|
|
- mListView.setAdapter(adapter);
|
|
|
- LogUtil.d(TAG,JSON.toJSONString(datas));
|
|
|
+
|
|
|
+ allDatas=getAllDatas(datas);
|
|
|
+ mAdapter.setData(allDatas);
|
|
|
+
|
|
|
+// adapter=new ItemContactsMeAdapter(getActivity(),datas);
|
|
|
+// mListView.setAdapter(adapter);
|
|
|
+// LogUtil.d(TAG,JSON.toJSONString(datas));
|
|
|
}catch (Exception e){
|
|
|
|
|
|
}
|
|
|
@@ -215,7 +244,7 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
mData= getData(o.toString());
|
|
|
LogUtil.prinlnLongMsg(TAG,"result:"+JSON.toJSONString( mData));
|
|
|
dynamicAdapter=new DynamicAdapter(getActivity(),mData);
|
|
|
- mListView.setAdapter(dynamicAdapter);
|
|
|
+// mListView.setAdapter(dynamicAdapter);
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
@@ -231,12 +260,12 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
// LogUtil.d(TAG,JSON.toJSONString(datas));
|
|
|
break;
|
|
|
}
|
|
|
- mListView.postDelayed(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- mListView.onRefreshComplete();
|
|
|
- }
|
|
|
- },1000);
|
|
|
+// mListView.postDelayed(new Runnable() {
|
|
|
+// @Override
|
|
|
+// public void run() {
|
|
|
+// mListView.onRefreshComplete();
|
|
|
+// }
|
|
|
+// },1000);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -260,12 +289,12 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- mListView.postDelayed(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- mListView.onRefreshComplete();
|
|
|
- }
|
|
|
- },1000);
|
|
|
+// mListView.postDelayed(new Runnable() {
|
|
|
+// @Override
|
|
|
+// public void run() {
|
|
|
+// mListView.onRefreshComplete();
|
|
|
+// }
|
|
|
+// },1000);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -296,13 +325,13 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
public void onTouchingLetterChanged(String s) {
|
|
|
LogUtil.d(TAG,"搜索关键字:"+s);
|
|
|
// 该字母首次出现的位置
|
|
|
-// int position = adapter.getPositionForSection(s.charAt(0));
|
|
|
-// if (position != -1) {
|
|
|
-// mListView.getRefreshableView().setSelection(position);
|
|
|
-// }
|
|
|
-// if ("↑".equals(s)) {
|
|
|
-// mListView.getRefreshableView().setSelection(0);
|
|
|
-// }
|
|
|
+ int position = mAdapter.getPositionForSection(s.charAt(0));
|
|
|
+ if (position != -1) {
|
|
|
+ refreshListView.setSelection(position);
|
|
|
+ }
|
|
|
+ if ("↑".equals(s)) {
|
|
|
+ refreshListView.setSelection(0);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -460,5 +489,47 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
|
|
|
}
|
|
|
return data;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+ private List<BaseSortModel<ContactsBean>> getAllDatas(List<ContactsBean> emList) {
|
|
|
+ if (ListUtils.isEmpty(emList)) return null;
|
|
|
+ List<BaseSortModel<ContactsBean>> list = new ArrayList<>();
|
|
|
+ for (ContactsBean e : emList) {
|
|
|
+
|
|
|
+ BaseSortModel<ContactsBean> mode = new BaseSortModel<>();
|
|
|
+ mode.setBean(e);
|
|
|
+
|
|
|
+ ContactsBean friend = mode.getBean();
|
|
|
+ if (friend == null) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ String name = friend.getName();
|
|
|
+ String wholeSpell = PingYinUtil.getPingYin(name);
|
|
|
+ if (!StringUtil.isEmpty(wholeSpell)) {
|
|
|
+ try {
|
|
|
+ String firstLetter = Character.toString(wholeSpell.charAt(0));
|
|
|
+ sideBar.addExist(firstLetter);
|
|
|
+ mode.setWholeSpell(wholeSpell);
|
|
|
+ mode.setFirstLetter(firstLetter);
|
|
|
+ mode.setSimpleSpell(PingYinUtil.converterToFirstSpell(name));
|
|
|
+ } catch (Exception o) {
|
|
|
+ o.printStackTrace();
|
|
|
+ }
|
|
|
+ } else {// 如果全拼为空,理论上是一种错误情况,因为这代表着昵称为空
|
|
|
+ mode.setWholeSpell("#");
|
|
|
+ mode.setFirstLetter("#");
|
|
|
+ mode.setSimpleSpell("#");
|
|
|
+ }
|
|
|
+
|
|
|
+ list.add(mode);
|
|
|
+ }
|
|
|
+ if (ListUtils.isEmpty(list)) {
|
|
|
+ list = new ArrayList<>();
|
|
|
+ } else {
|
|
|
+ Collections.sort(list, comparator);
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|