您的位置:首页 > 其它

关于 listview里面有EditText,然后想改变editText的值并且可以获取

2016-01-20 16:47 357 查看
<pre name="code" class="java">package com.example.listviewdemo;

import java.util.List;

import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.util.SparseArray;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
/**
*
* TODO 这里最主要的就是确定 在editText输入时,获取到当前位置position,然后传给 MyTextWatcher<br>
* @author liuhuan2 <br>
* @version 1.0.0 2016年1月20日 下午4:46:00 <br>
* @see
* @since JDK 1.4.2.6
*/
public class MyAdapter extends BaseAdapter{
private Context context;
private List<Bean> list;
private LayoutInflater inflater;
private MyTextWatcher myTextWatcher;

private int index;
public MyAdapter(Context context, List<Bean> list) {
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);
myTextWatcher = new MyTextWatcher();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
HolerView holerView = null;
if(convertView == null){
holerView = new HolerView();
convertView = inflater.inflate(R.layout.item,null);
holerView.editText = (EditText) convertView.findViewById(R.id.edit);
convertView.setTag(holerView);
}else{
holerView = (HolerView) convertView.getTag();
}

//myTextWatcher会叠加 所以要移除
holerView.editText.removeTextChangedListener(myTextWatcher);
holerView.editText.setText(list.get(position).getCount());
holerView.editText.addTextChangedListener(myTextWatcher);

holerView.editText.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if(hasFocus){
index = position;
myTextWatcher.setPosition(index);
}
}
});
return convertView;
}

class MyTextWatcher implements TextWatcher{

private int position;
public MyTextWatcher() {
}

public int getPosition() {
return position;
}

public void setPosition(int position) {
this.position = position;
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
list.get(position).setCount(s.toString());
Log.i("xxxxxxxx", "position=="+position);
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}

}
class HolerView{
EditText editText;
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: