ListView里面嵌套spinner和editext
来源:互联网 发布:mac 刷机iphone 编辑:程序博客网 时间:2024/06/07 14:46
public class Adapter extends BaseAdapter { private ArrayList<Line> lines; private List<String> data_list; private String[] checkListName; private List<Integer> list; private Worker worker; // 存储以名值对。存放Spinner的Prompt和用户选中的值 private Map<String, Integer> allValues; public Adapter(ArrayList<Line> mLines, Worker worker,List<Integer> list) { this.list=list; this.lines = mLines; this.worker = worker; data_list = new ArrayList<String>(); for (int i = 0; i < worker.getData().size() + 1; i++) { if (i == 0) { data_list.add(""); } else { data_list.add(worker.getData().get(i-1).getRealName()); } } checkListName = new String[worker.getData().size()]; for (int j = 0; j < worker.getData().size(); j++) { aCache.put("工人" + j, "0"); checkListName[j] = "工人" + j; } allValues = new HashMap<String, Integer>(); putAllValues(); } private void putAllValues() { for (String str : checkListName) { allValues.put(str, 0); } } public void setAllValues(Map<String, Integer> allValues) { this.allValues = allValues; } @Override public int getCount() { if (list.size()==0){ return 1; }else { return list.size(); } } @Override public Object getItem(int position) { return lines.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = LayoutInflater.from(SelectWorkerActivity.this).inflate(R.layout.listview_item, parent, false); holder.textView = (TextView) convertView.findViewById(R.id.editText1); holder.etLine = (EditText) convertView.findViewById(R.id.editText1); holder.spinner = (Spinner) convertView.findViewById(R.id.sp_test); ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(SelectWorkerActivity.this, android.R.layout.simple_spinner_item, data_list); holder.spinner.setAdapter(adapter1); holder.spinner.setTag(position); holder.spinner.setOnItemSelectedListener(new ItemClickSelectListener( holder.spinner)); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } final Line line = lines.get(position); if (holder.etLine.getTag() instanceof TextWatcher) { holder.etLine.removeTextChangedListener((TextWatcher) (holder.etLine.getTag())); } if (TextUtils.isEmpty(line.getText())) { holder.etLine.setText(""); } else { holder.etLine.setText(line.getText()); } if (line.isFocus()) { if (!holder.etLine.isFocused()) { holder.etLine.requestFocus(); } CharSequence text = line.getText(); holder.etLine.setSelection(TextUtils.isEmpty(text) ? 0 : text.length()); } else { if (holder.etLine.isFocused()) { holder.etLine.clearFocus(); } } holder.etLine.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(final View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { final boolean focus = line.isFocus(); check(position); if (!focus && !holder.etLine.isFocused()) { holder.etLine.requestFocus(); holder.etLine.onWindowFocusChanged(true); } } return false; } }); final TextWatcher watcher = new SimpeTextWather() { @Override public void afterTextChanged(Editable s) { if (TextUtils.isEmpty(s)) { line.setText(null); } else { line.setText(String.valueOf(s)); } } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { super.onTextChanged(s, start, before, count); if (TextUtils.isEmpty(s)) { aCache.put("数量" + position, "0"); } else { aCache.put("数量" + position + "", s.toString()); } } }; holder.etLine.addTextChangedListener(watcher); holder.etLine.setTag(watcher); String checkedName = checkListName[position]; //关键代码,配合下面的相应事件使用。 holder.spinner.setPrompt(checkedName); int spinnerOptionPosition = allValues.get(checkedName); holder.spinner.setSelection(spinnerOptionPosition); return convertView; } private void check(int position) { for (Line l : lines) { l.setFocus(false); } lines.get(position).setFocus(true); } class ViewHolder { TextView textView; EditText etLine; private Spinner spinner; } private class ItemClickSelectListener implements AdapterView.OnItemSelectedListener { Spinner spinner; public ItemClickSelectListener(Spinner spinner) { this.spinner = spinner; } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (TextUtils.isEmpty(data_list.get(position))) { aCache.put(spinner.getPrompt().toString(), "0"); if (Integer.parseInt(spinner.getTag().toString())<Integer.parseInt(aCache.getAsString("chushinumber"))){ spinner.setSelection(list.get(Integer.parseInt(spinner.getTag().toString()))+1); } } else { aCache.put(spinner.getPrompt().toString(), data_list.get(position)); } allValues.put(spinner.getPrompt().toString(), position); } @Override public void onNothingSelected(AdapterView<?> parent) { } } //返回用于选中的所有值 public Map<String, Integer> getSelectValues() { return allValues; } } private ArrayList<Line> createLines(Worker worker) { ArrayList<Line> lines = new ArrayList<>(); for (int i = 0; i < worker.getData().size(); i++) { aCache.put("数量" + i, "0"); Line line = new Line(); line.setNum(i); lines.add(line); } return lines; }
0 0
- ListView里面嵌套spinner和editext
- 关于ScrollView里面嵌套ListView和GridView
- 在Listview里面加入Spinner
- listView里面嵌套viewPage
- adapter里面嵌套ListView
- listView、gidView和spinner
- Spinner和ListView
- 当PullToRefreshScrollView里面嵌套ListView
- ScrollView里面嵌套ListView,RecyclerView
- PullToRefreshScrolview里面嵌套listView,gridView.
- TextView和Editext里面的ImageSpan居中对齐
- WindowManager使用FLAG_NOT_TOUCH_MODAL后Listview和Editext输入法无响应
- expandablelistview学习--在listView里面嵌套GridView
- expandablelistview学习--在listView里面嵌套GridView
- expandablelistview学习--在listView里面嵌套GridView
- expandablelistview学习--在listView里面嵌套GridView
- expandablelistview学习--在listView里面嵌套GridView
- listview里面嵌套dropdownlist的简单办法!
- php.ini常用配置
- AJAX XML 实例(w3school)
- 开源推荐系统Crab安装
- apache+php环境,时遇到php5ts.dll错误
- python学习笔记
- ListView里面嵌套spinner和editext
- 线性表
- MySQL5.7.11免安装版的安装和配置以及解决MYSQL服务无法启动问题
- Mediator模式详解--设计模式(18)
- apache 开启 url_rewrite
- 将博客搬至CSDN
- Android 自定义View 分区域监听 回调
- 使用YUI Compressor压缩CSS/JS
- 用cakephp快速开发php应用--用户及权限控制