gpt4 book ai didi

android - 如何在自定义 ListView 中添加 TextChangeListener?

转载 作者:行者123 更新时间:2023-11-29 21:35:43 28 4
gpt4 key购买 nike

我创建了一个自定义 ListView,其中每一行都包含一个 TextView 和一个 EditText。一切都运行良好,但我只是不知道应该在哪里将 TextChangeListener 设置为 EditText 以便我可以设置/保存输入的值。这是我的代码:

行项.java

public class RowItem {

private String title;
private String value;

public RowItem(String title, String value) {
this.title = title;
this.value = value;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}
}

自定义列表.java

public class CustomList extends ArrayAdapter<RowItem> {

Context context;
List<RowItem> items;

public CustomList(Context context, int resourceId,
List<RowItem> items) {
super(context, resourceId, items);
this.context = context;
this.items = items;
}

/*private view holder class*/
private class ViewHolder {
TextView txtTitle;
EditText txtValue;
}

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
RowItem rowItem = getItem(position);

LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row_item, null);
holder = new ViewHolder();
holder.txtTitle = (TextView) convertView.findViewById(R.id.textView1);
holder.txtValue = (EditText) convertView.findViewById(R.id.editText1);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();

holder.txtTitle.setText(rowItem.getTitle());
holder.txtValue.setText(rowItem.getValue());

return convertView;
}
}

有什么建议吗?

最佳答案

修改您的 viewHolder 以包含它指向的行的行号。

private class ViewHolder {
TextView txtTitle;
EditText txtValue;
int rowNumber;
}

始终设置行号

holder.txtValue.setText(rowItem.getValue());
holder.rowNumber = position;

将您的自定义适配器作为 onFocusListener 添加到 editText 上,并获取由以下代码编辑的 rowNumber。

void onFocusChanged(View v, boolean hasFocus) {
ViewHolder holder = (ViewHolder)v.getParentView().getTag();
int rowNo = holder.rowNumber;
//do rest of the stuff like modifying the array list.
}

但是,我确实认为应该有比这个更简单的解决方案。

关于android - 如何在自定义 ListView 中添加 TextChangeListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18474980/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com