ListView中的item存在EditText时,焦点问题及输入内容保存解决方法
来源:互联网 发布:淘宝多久删除炒作评价 编辑:程序博客网 时间:2024/05/16 12:23
import android.content.Context;import android.text.Editable;import android.text.TextWatcher;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import com.dev.edgarng.myapplication.R;import java.util.List;import java.util.Map;public class ListViewTestAdapter extends BaseAdapter { private List<Map<String, String>> mData; private LayoutInflater mInflater; private Context mContext; private int index = -1; public ListViewTestAdapter(Context context, List<Map<String, String>> data) { this.mContext = context; this.mData = data; this.mInflater = LayoutInflater.from(context); } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } /////////////////////////////////////////////////////////////////////////// //////////////////////////getView()方法是重点!!!!!!/////////////////////// ////////////////////////////////////////////////////////////////////////// @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = new ViewHolder(); if (convertView == null) { convertView = mInflater.inflate(R.layout.main_function_listitem3, null); holder.title = (TextView) convertView.findViewById(R.id.txtTitle); holder.editText = (EditText) convertView.findViewById(R.id.input); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } EditText editText = holder.editText; //使listview中的edittext获取焦点 editText.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View view, MotionEvent event) { // 在TOUCH的UP事件中,要保存当前的行下标,因为弹出软键盘后,整个画面会被重画 // 在getView方法的最后,要根据index和当前的行下标手动为EditText设置焦点 if (event.getAction() == MotionEvent.ACTION_UP) { index = position; } return false; } }); //以下方法为edittext进行数据的保存 editText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable editable) { } public void beforeTextChanged(CharSequence text, int start, int count, int after) { } public void onTextChanged(CharSequence text, int start, int before, int count) { //如果该edittext有默认内容,还要在if那里进行过滤 if (index>=0 && text.length() > 0 && index == position && !text.toString().equals("默认内容")) { mData.get(index).put("input", text.toString()); } } }); holder.title.setText(mData.get(position).get("title")); holder.editText.setText(mData.get(position).get("input")); editText.clearFocus(); if (index != -1 && index == position) { // 如果当前的行下标和点击事件中保存的index一致,手动为EditText设置焦点。 editText.requestFocus(); } final ViewHolder finalHolder = holder; convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mContext, finalHolder.title.getText(), Toast.LENGTH_SHORT).show(); } }); return convertView; } public final class ViewHolder { public TextView title; public EditText editText; }}
0 0
- ListView中的item存在EditText时,焦点问题及输入内容保存解决方法
- listview中的item和edittext强焦点问题怎么解决
- listview中的item和edittext强焦点问题怎么解决
- ListView中item点击事件和item中radiobutton的点击editText输入焦点问题
- ListView中Item有EditText,焦点问题
- 关于ListView中存在两个EditText焦点的解决方法
- EditText在ListView中的键盘焦点问题
- ListView中存在EditText,弹出键盘后焦点丢失问题。
- listView Item 焦点问题
- ListView+EditText 焦点问题
- ListView的item中含edittext时无法获取焦点的问题
- android listview 每一项都是edittext 导致的坑爹问题 内容的保存和焦点,光标位置的设置
- Edittext In Listview,当listview的item中有edittext时,怎么保存edittext的值?
- listView Item中的焦点情况
- listView中的item获得焦点
- ListView与item中控件焦点抢占及错位问题
- ListView中EditText焦点问题
- ListView中EditText焦点问题
- 初窥c++11:lambda函数及其用法
- 寒假第二弹之莫比乌斯反演
- WebKit之Chromium加载网络加速初步研究
- iOS开发中图片的一些处理操作(背景色,透明度,合成,大小)
- Windows开启NTP服务
- ListView中的item存在EditText时,焦点问题及输入内容保存解决方法
- Unity Toast插件(UGUI版)
- 五分钟理解一致性哈希算法(consistent hashing)
- 面试题54:树中两个节点的最低公共祖先
- JS截取字符串常用方法详细整理
- Windows镜像安装时选择系统版本
- IOS 打印素数与计算天数
- 详解如何实现定义一个参数个数可变的函数
- 6、数组