Android ListView+CheckBox+EditText注意事项

1、CheckBox状态保存

//保存item位置
final int listTag = position;
//checkBox点击保存状态
holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
	
	@Override
	public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
		// TODO Auto-generated method stub
		if(arg1){ 
			mData.get(listTag).setSelected(true);
        <span style="white-space:pre">	</span>}else{ 
        	<span style="white-space:pre">	</span>mData.get(listTag).setSelected(false);
        <span style="white-space:pre">	</span>}
	}
}); 
2、监听EditText内容变化并保存

holder.editText.addTextChangedListener(new TextWatcher() {
	
	@Override
	public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
			int arg3) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void afterTextChanged(Editable arg0) {
		// TODO Auto-generated method stub
		mData.get(listTag).setOriginal(arg0.toString());
	}
});
3、EditText或CheckBox无法获取焦点,在item布局最外层加下面代码

android:descendantFocusability="blocksDescendants"
4、还有一个奇葩的问题,点击EditText后弹出输入法,但是没有获取到焦点,第二次点击才好用。
private int index = -1;
//记录点击的TextView
holder.editText.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View view, MotionEvent event) {
        // 在TOUCH的UP事件中,要保存当前的行下标,因为弹出软键盘后,整个画面会被重画
        // 在getView方法的最后,要根据index和当前的行下标手动为EditText设置焦点 
        if(event.getAction() == MotionEvent.ACTION_UP) {
            index= listTag;
        }
        return false;
    }
});
//getView方法最后为EditText添加焦点
editText.clearFocus();
if(index!= -1 && index == position) {
       // 如果当前的行下标和点击事件中保存的index一致,手动为EditText设置焦点。
        editText.requestFocus();
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c小旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值