代码示列

自动生成列表view


import 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();
    }
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值