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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手指骨折后关节僵硬怎么办 手指外伤后关节肿大僵硬怎么办 胳膊骨折了手肿怎么办 耳朵被肘了耳鸣怎么办 耳朵鼓膜外显的怎么办 耳膜破了怎么办为好 耳朵的鼓膜破了怎么办 被打耳鼓膜穿孔怎么办 两只耳朵嗡嗡响怎么办 耳朵长了个脓包怎么办 胸一个大一个小怎么办 把耳朵掏出血了怎么办 掏耳朵戳出血了怎么办 耳朵戳伤流血了怎么办 耳朵挖破出血了怎么办 耳朵让耳屎堵了怎么办 手被牙齿划破了怎么办 耳朵掏伤了很痛怎么办 掏伤耳朵发炎了怎么办 耳朵被掏发炎了怎么办 打的耳洞化脓了怎么办 打了耳洞流脓了怎么办 打了耳洞发炎怎么办 打了耳洞化脓了怎么办 3岁宝宝耳朵流脓怎么办 耳朵里面是湿的怎么办 耳朵里天天很痒怎么办 身上长湿疹很痒怎么办 嗓子干疼耳朵痒怎么办 上火了耳朵嗡嗡响怎么办 太阳凹颧骨外扩怎么办 4岁儿童脊柱侧弯怎么办 瘦的人得多囊怎么办 智齿刚长出来该怎么办 宝宝耳朵睡尖了怎么办 睡觉压的耳朵疼怎么办 月子里奶水越来越少怎么办 月子里生气回奶了怎么办 儿童疫苗本丢了怎么办 跖骨2-5骨折了怎么办 耳朵被水堵住了怎么办