我想从TextWatcher(在listview中)中更改holder.title文本。最好的方法是什么? 我无法将holder.title设置为final,我需要另一种解决方案。
public View getView(int position, View convertView, ViewGroup parent){
View ListItem = convertView;
Holder holder;
if (ListItem == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
ListItem = inflater.inflate(layoutResourceId, parent, false);
holder = new Holder();
holder.banner = (ImageView)ListItem.findViewById(R.id.banner);
holder.title = (TextView) ListItem.findViewById(R.id.titleText);
holder.editText = (EditText) ListItem.findViewById(R.id.edittext);
ListItem.setTag(holder);
} else {
holder = (Holder) ListItem.getTag();
}
TextWatcher textWatcher = (new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
holder.title.setText(s.toString() + " Title") // I want to access holder.title to do this..
}
@Override
public void afterTextChanged(Editable s) {
}
});
return ListItem;
}
答案 0 :(得分:0)
我通过创建一个实现TextWatcher的新类并添加我自己的方法来修复它,以便我可以将我的Holder对象传递给它..
public class MyTextWatcher implements TextWatcher {
public MyClass.Holder holder;
public void setView(CharityAmountAdapter.Holder newHolder){
holder = newHolder;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
holder.title.setText(s.toString() + "Test");
}
@Override
public void afterTextChanged(Editable s) {
}
}