java如何实现listView中一行的侦听器?
我有一个自定义视图的列表视图。每个视图都包含一个editText。我试图将侦听器添加到我在getView()中创建的editText变量中。问题是,当我创建侦听器时,它不允许我使用editText变量,除非我将其设置为final,但如果我将其设置为final,我想当该行被重用时,我会遇到问题。这是我的问题的一个简单例子:
private class MyAdapter extends ArrayAdapter<Date>{
public MyAdapter(Context context, int resource, int textViewResourceId,
List<Date> objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if(convertView==null){
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.listview_cell_single, parent, false);
}else{
row = convertView;
}
EditText et = (EditText) row.findViewById(R.id.editText_single);
et.setText("" + position);
et.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
et.setText("You edited row: " + position);
//Error: et must be final, position must be final
}
}
});
共 (0) 个答案