自动生成列表viewimport android.os.Bundle;import android.os.Handler;import android.os.Message;import android.text.Editable;import android.text.TextUtils;import android.text.TextWatcher;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;import org.greenrobot.eventbus.EventBus;import org.greenrobot.eventbus.Subscribe;import org.greenrobot.eventbus.ThreadMode;import org.xutils.view.annotation.ContentView;import org.xutils.view.annotation.Event;import org.xutils.view.annotation.ViewInject;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;@ContentView(R.layout.ta_pathography)public class TA_PathographyRecord extends TA_BaseActivity { @ViewInject(R.id.mainlly) private LinearLayout mainlly; @ViewInject(R.id.emptyLayout) protected EmptyLayout mErrorLayout; @ViewInject(R.id.searchedittext) protected EditText searchedittext; PatientModel patientModel; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); initView(); initData(); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_worktask, menu); menu.findItem(R.id.action_right).setTitle("保存").setIcon(R.mipmap.icon_check); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_right) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < addStringList.size(); i++) { String s = addStringList.get(i).getTemplateContent(); if(!TextUtils.isEmpty(s)) { sb.append(s); if(i!=addStringList.size()-1) { sb.append("\n"); } } } EventBus.getDefault().post(new EBPathography(sb.toString())); finish(); return true; } else { return super.onOptionsItemSelected(item); } } protected void initView() { mRepleace_toolbar.setVisibility(View.VISIBLE); mToolbar.setVisibility(View.VISIBLE); patientModel = (PatientModel) getIntent().getSerializableExtra(BundleCommon.KEY_Patient); if (patientModel != null) { String sex = ""; if (patientModel.getSex() != null) { DictionaryModel dm = DictionalDao.getDictionaryByTypeId(1, patientModel.getSex()); if (dm != null) { sex = dm.getDisplayname(); } } String age = patientModel.getAge() != null ? patientModel.getAge()+ "岁" : ""; String sickebed = patientModel.getSickbedNo()!=null?patientModel.getSickbedNo() +"床 " :""; String title =sickebed + patientModel.getName() + " " + age + " " + sex; mRepleace_toolbar.setText(title); } mToolbar.setTitle(""); setToolbarBackClose(R.mipmap.icon_close); mToolbar.inflateMenu(R.menu.menu_worktask); searchedittext.addTextChangedListener(textWatcher); } protected void initData() { mErrorLayout.setErrorType(EmptyLayout.NETWORK_LOADING); mErrorLayout.setOnLayoutClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mErrorLayout.setErrorType(EmptyLayout.NETWORK_LOADING); getData(); } }); getData(); } private TextWatcher textWatcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { String input = s.toString(); if(input.equals("")){ mErrorLayout.setErrorType(EmptyLayout.HIDE_LAYOUT); genaralListView(wraplist); }else{ mErrorLayout.setErrorType(EmptyLayout.NETWORK_LOADING); mHandle.sendEmptyMessageDelayed(1,500); } } }; Handler mHandle = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); searchB(); } }; public void searchB() { String searchString = searchedittext.getText().toString(); if(searchString.equals("")) return; if(wraplist==null) return; List<PathographyTemplate> searchList = new ArrayList<>(); for(PathographyTemplate pt : wraplist) { for(PathographyTemplateModel model : pt.getSameList()) { if(model.getKeyword()!=null && model.getKeyword().contains(searchString) || model.getTemplateContent()!=null && model.getTemplateContent().contains(searchString)) { searchList.add(pt); } } } if(searchList.size()>0) { mErrorLayout.setErrorType(EmptyLayout.HIDE_LAYOUT); genaralListView(searchList); } else { mErrorLayout.setErrorType(EmptyLayout.NODATA); mErrorLayout.setNoDataContent("未找到匹配数据"); } } @Override public void onResume() { super.onResume(); } List<PathographyTemplateModel> addStringList = new ArrayList<>(); List<PathographyTemplate> wraplist; private void getData() { responseCall = appContext.getAPIService().getAllPathographytemplate(); responseCall.enqueue(new Callback<List<PathographyTemplateModel>>() { @Override public void onResponse(Call<List<PathographyTemplateModel>> call, Response<List<PathographyTemplateModel>> response) { int code = response.code(); if (code == 200) { if (response.body() != null) { List<PathographyTemplateModel> list = response.body(); wraplist = SortAllPathographyTemplate(list); genaralListView(wraplist); mErrorLayout.setErrorType(EmptyLayout.HIDE_LAYOUT); } else { mErrorLayout.setErrorType(EmptyLayout.NODATA); } } else { mErrorLayout.setErrorType(EmptyLayout.NETWORK_ERROR); } } @Override public void onFailure(Call<List<PathographyTemplateModel>> call, Throwable t) { if (isFinishing()) return; UIHelper.snackBarMessage(mToolbar, "网络超时"); mErrorLayout.setErrorType(EmptyLayout.NETWORK_ERROR); } }); } /** * 生成数据列表 * @param wraplist */ private void genaralListView(List<PathographyTemplate> wraplist) { if(wraplist==null) return; mainlly.removeAllViews(); for (final PathographyTemplate template : wraplist) { LinearLayout child = (LinearLayout) getLayoutInflater().inflate(R.layout.pathgraphy_item, null, false); final TextView content = (TextView) child.findViewById(R.id.content); final CheckBox checkBox = (CheckBox) child.findViewById(R.id.checkBox); final LinearLayout mainlly_item = (LinearLayout) child.findViewById(R.id.mainlly_item); content.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { checkBox.setChecked(checkBox.isChecked() ? false : true); if(checkBox.isChecked()) { UIHelper.setSubChildCheckBoxTrue(mainlly_item); } else { UIHelper.setSubChildCheckBoxFalse(mainlly_item); } } }); checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { if (isChecked) { List<PathographyTemplateModel> templateSameList = template.getSameList(); if (templateSameList != null && templateSameList.size() > 0) { for (PathographyTemplateModel model : templateSameList) { if (!addStringList.contains(model)) { addStringList.add(model); } } } UIHelper.setSubChildCheckBoxTrue(mainlly_item); } else { List<PathographyTemplateModel> templateSameList = template.getSameList(); if (templateSameList != null && templateSameList.size() > 0) { templateSameList.iterator(); for (Iterator<PathographyTemplateModel> iterator = templateSameList.iterator(); iterator.hasNext();) { PathographyTemplateModel m = iterator.next(); if (addStringList.contains(m)) { addStringList.remove(m); } } } UIHelper.setSubChildCheckBoxFalse(mainlly_item); } } }); if (TextUtils.isEmpty(template.getTemmplateName())) { content.setText("未分类"); } else { content.setText(template.getTemmplateName()); } for (final PathographyTemplateModel model : template.getSameList()) { LinearLayout child_item = (LinearLayout) getLayoutInflater().inflate(R.layout.pathgraphy_item_item, null, false); final TextView content_item = (TextView) child_item.findViewById(R.id.content); final CheckBox checkBox_item = (CheckBox) child_item.findViewById(R.id.checkBox); if (TextUtils.isEmpty(model.getTemplateContent())) { content_item.setText("无内容"); } else { content_item.setText(model.getTemplateContent()); } content_item.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { checkBox_item.setChecked(checkBox_item.isChecked() ? false : true); } }); checkBox_item.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { if (isChecked) { if (!addStringList.contains(model)) { addStringList.add(model); } } else { if (addStringList.contains(model)) { addStringList.remove(model); } } } }); mainlly_item.addView(child_item); } mainlly.addView(child); } } public List<PathographyTemplate> SortAllPathographyTemplate(List<PathographyTemplateModel> allSimples) { List<PathographyTemplate> custWorkItems = new ArrayList<PathographyTemplate>(); // 游标index int index = 0, j = 0; int size = allSimples.size(); while (index < size) { PathographyTemplate custWorkItem = new PathographyTemplate(); String t = allSimples.get(index).getTemplateType(); custWorkItem.setTemmplateName(t); ArrayList<PathographyTemplateModel> children = new ArrayList<PathographyTemplateModel>(); for (j = index; j < size; j++) { PathographyTemplateModel c = allSimples.get(j); String child = c.getTemplateType(); if (t.equals(child)) { // 同时记录该重复出现的元素在原数组中的下标j children.add(c); } else { break; } } // 往后推进游标index index = j; //Collections.sort(children); custWorkItem.setSameList(children); custWorkItems.add(custWorkItem); } // Collections.sort(custWorkItems); return custWorkItems; } @Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行 public void onUserEvent(Integer event) { } @Event(type = View.OnClickListener.class, value = R.id.tv_insertPathography) private void tv_insertPathography(View view) { UIHelper.snackBarMessage(view, "ss"); }}
//
长按多选
import android.os.Bundle;import android.support.v4.widget.SwipeRefreshLayout;import android.support.v7.view.ActionMode;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import org.greenrobot.eventbus.EventBus;import org.greenrobot.eventbus.Subscribe;import org.greenrobot.eventbus.ThreadMode;import org.xutils.view.annotation.ContentView;import org.xutils.view.annotation.Event;import org.xutils.view.annotation.ViewInject;import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;@ContentView(R.layout.ta_doctoradvice_bypatient) public class TA_AssessRecord extends TA_BaseActivity implements SwipeRefreshLayout.OnRefreshListener , ActionMode.Callback{ @ViewInject(R.id.swiperefreshlayout) SwipeRefreshLayout mSwipeRefreshLayout; @ViewInject(R.id.recycler) RecyclerView mRecycler; @ViewInject(R.id.emptyLayout) protected EmptyLayout mErrorLayout; AssessRecordItemAdapter mPatientsAdapter; PatientModel patientModel; private ActionMode actionMode; public static TA_AssessRecord instance; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); instance = this; initView(); initData(); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } protected void initView() { mRepleace_toolbar.setVisibility(View.VISIBLE); mToolbar.setVisibility(View.VISIBLE); patientModel = (PatientModel) getIntent().getSerializableExtra(BundleCommon.KEY_Patient); if (patientModel != null) { String sex = ""; if (patientModel.getSex() != null) { DictionaryModel dm = DictionalDao.getDictionaryByTypeId(1, patientModel.getSex()); if (dm != null) { sex = dm.getDisplayname(); } } String age = patientModel.getAge() != null ? patientModel.getAge()+ "岁" : ""; String sickebed = patientModel.getSickbedNo()!=null?patientModel.getSickbedNo() +"床 " :""; String title =sickebed + patientModel.getName() + " " + age + " " + sex; mRepleace_toolbar.setText(title); } mToolbar.setTitle(""); setToolbarBackClose(R.mipmap.icon_close); mToolbar.inflateMenu(R.menu.menu_worktask); } protected void initData() { mSwipeRefreshLayout.setOnRefreshListener(this); mSwipeRefreshLayout.setColorSchemeResources( R.color.swiperefresh_color1, R.color.swiperefresh_color2, R.color.swiperefresh_color3, R.color.swiperefresh_color4); LinearLayoutManager layoutManager = new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mRecycler.setLayoutManager(layoutManager); mRecycler.setItemAnimator(new DefaultItemAnimator()); //设置adapter mPatientsAdapter = new AssessRecordItemAdapter(); AlphaAnimatorAdapter animatorAdapter = new AlphaAnimatorAdapter(mPatientsAdapter, mRecycler); mRecycler.setAdapter(animatorAdapter); //mListView.setHasFixedSize(true); mErrorLayout.setErrorType(EmptyLayout.NETWORK_LOADING); mErrorLayout.setOnLayoutClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mErrorLayout.setErrorType(EmptyLayout.NETWORK_LOADING); onRefresh(); } }); onRefresh(); mPatientsAdapter.setOnItemClickLitener(new ListBaseAdapter.OnItemClickLitener() { @Override public void onItemClick(View view, int position) { if (actionMode != null) { // 如果当前处于多选状态,则进入多选状态的逻辑 // 维护当前已选的position addOrRemove(position); } else { // 如果不是多选状态,则进入点击事件的业务逻辑 final NursingDocModel model = (NursingDocModel) mPatientsAdapter.mDatas.get(position); EventBus.getDefault().post(new EBPathography(model.getName()+":"+model.getScoreTotal()+",")); finish(); } } @Override public void onItemLongClick(View view, int position) { if (actionMode == null) { actionMode = startSupportActionMode(TA_AssessRecord.this); } } }); } private void getData() { Call<List<NursingDocModel>> toServer = appContext.getAPIService().getNursingDoc(patientModel.getId()); toServer.enqueue(new Callback<List<NursingDocModel>>() { @Override public void onResponse(Call<List<NursingDocModel>> call, Response<List<NursingDocModel>> response) { if(pdialog!=null) { pdialog.dismiss(); } setSwipeRefreshLoadedState(); if(response.code()==200) { List<NursingDocModel> dto = response.body(); remove1(dto); if(dto!=null && dto.size()>0) { mErrorLayout.setErrorType(EmptyLayout.HIDE_LAYOUT); mPatientsAdapter.clear(); Collections.sort(dto); Collections.reverse(dto); mPatientsAdapter.mDatas.addAll(dto); mPatientsAdapter.notifyDataSetChanged(); } else { mErrorLayout.setErrorType(EmptyLayout.NODATA); } } } private void remove1(List<NursingDocModel> dto) { if(dto==null)return; Iterator<NursingDocModel> it =dto.iterator(); while(it.hasNext()) { NursingDocModel model = it.next(); if(model.getSourceType()!=null&&model.getSourceType().equals("1")) { it.remove(); } if(model.getSourceType()!=null&&model.getSourceType().equals("2")) { it.remove(); } } } @Override public void onFailure(Call<List<NursingDocModel>> call, Throwable t) { setSwipeRefreshLoadedState(); UIHelper.snackBarMessage(mToolbar, "网络超时"); mErrorLayout.setErrorType(EmptyLayout.NETWORK_ERROR); if(pdialog!=null) { pdialog.dismiss(); } } }); } /** * 设置顶部正在加载的状态 */ public void setSwipeRefreshLoadingState() { if (mSwipeRefreshLayout != null) { mSwipeRefreshLayout.setRefreshing(true); // 防止多次重复刷新 mSwipeRefreshLayout.setEnabled(false); } } /** * 设置顶部加载完毕的状态 */ public void setSwipeRefreshLoadedState() { if (mSwipeRefreshLayout != null) { mSwipeRefreshLayout.setRefreshing(false); mSwipeRefreshLayout.setEnabled(true); } } @Override public void onResume() { super.onResume(); } @Override public void onRefresh() { setSwipeRefreshLoadingState(); getData(); } @Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行 public void onUserEvent(Integer event) { } public Set<Integer> positionSet = new HashSet<>(); private void addOrRemove(int position) { if (positionSet.contains(position)) { // 如果包含,则撤销选择 positionSet.remove(position); } else { // 如果不包含,则添加 positionSet.add(position); } if (positionSet.size() == 0) { // 如果没有选中任何的item,则退出多选模式 actionMode.finish(); } else { // 设置ActionMode标题 actionMode.setTitle(positionSet.size() + " 已选择"); // 更新列表界面,否则无法显示已选的item mPatientsAdapter.notifyDataSetChanged(); } } @Event(type = View.OnClickListener.class, value = R.id.rrl_yz) private void rrl_yz(View view) { UIHelper.snackBarMessage(view, "ss"); } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { if (actionMode == null) { actionMode = mode; MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.menu_worktask, menu); menu.findItem(R.id.action_right).setTitle("保存").setIcon(R.mipmap.icon_check); return true; } else { return false; } } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case R.id.action_right: List<NursingDocModel> valueSet = new ArrayList<>(); for (int position : positionSet) { valueSet.add((NursingDocModel) mPatientsAdapter.getData(position)); } StringBuilder sb = new StringBuilder(); int size = valueSet.size(); for (int i = 0; i < size; i++) { NursingDocModel model = (NursingDocModel) mPatientsAdapter.getData(i); String s = model.getName()+":"+model.getScoreTotal(); if(i!=size-1) { s.concat(","); } sb.append(s); } mode.finish(); EventBus.getDefault().post(new EBPathography(sb.toString())); finish(); return true; default: return false; } } @Override public void onDestroyActionMode(ActionMode mode) { actionMode = null; positionSet.clear(); mPatientsAdapter.notifyDataSetChanged(); }}
0 0