ListView更新某个item
1、listview包含EditText控件:
private class ViewHolders {
private EditText et_Content;
}
final ViewHolders holders = new ViewHolders();
holders.et_Content = (CLEditText) convertView
.findViewById(R.id.et_process_22);
2、设置EditText值,在activity中获取
holders.et_Content.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
int position1 = (Integer) holders.et_Content.getTag();
ProcessInfo info = mListData.get(position1);
info.setContent((holders.et_Content.getText().toString().trim()));
String bigStr = holders.et_Content.getText().toString().trim();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
for (int i = 0; i < mListData.size(); i++) {
//这里判断要改变的item
if (mListData.get(i).getTitle().indexOf("标题") != -1) {
try {
mListData.get(i)
.setContent(
CommonTools.digitUppercase(s
.toString()));
updateSingle(i);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
mListData.get(i)
.setContent(
mListData.get(i).getContent());
}
}
}
3.更改item的值
/**
* 第一种方法 更新对应view的内容
*
* @param position
* 要更新的位置
*/
private void updateSingle(int position) {
View childAt = mList.getChildAt(position
- mList.getFirstVisiblePosition() + 1);
if (childAt != null) {
CLEditText myTv = (CLEditText) childAt.findViewById(R.id.et_process_22);
if (myTv != null) {// 当item可见的时候更新
myTv.setText(mListData.get(position).getContent());
}
}
}