【问题标题】:Keep an EditText value in a ListView在 ListView 中保留 EditText 值
【发布时间】:2023-03-15 08:55:01
【问题描述】:

美好的一天!

我在 EditText 中携带一个 ListView,用户滚动在 EditText 中输入的值会更改位置。

我应该如何处理?

谢谢!

方法getView():

public View getView(final int position, View convertView, ViewGroup parent){

final Sapatos sapato = lista.get(position);  

if (convertView == null){  

    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
    holder = new ViewHolder();  

    convertView = inflater.inflate(R.layout.list_pedidos, null);  

    holder.img = (ImageView) convertView.findViewById(R.id.imgPed);  
    holder.edt = (EditText)convertView.findViewById(R.id.editText1);  

    final LinearLayout layout;  
    layout = (LinearLayout)convertView.findViewById(R.id.LayoutPed);  


    convertView.setTag(holder);  

} else{  
    holder = (ViewHolder) convertView.getTag();  
}  


holder.img.setImageResource(sapato.getImagem());  
holder.edt.setText(""); //adicionei somente esta linha  

return convertView;  

}

【问题讨论】:

  • 你的意思是你在每个列表项中都有编辑文本吗?
  • 我不太明白这个问题...你能发布一些代码吗?
  • 是的!当我在 EditText 中键入一个值并导航 ListView 时,这个值在我遍历列表时被分配给其他行。
  • 我发布了getView()方法。
  • 您的 EditText 似乎正在被回收(通过convertView)并重新显示在新的列表项中。您可能需要在 ListAdapter 中保留一个字符串数组,以跟踪每个 EditText 的状态。这行:holder.edt.setText(""); 使得 EditTexts 在滚动到屏幕上时看起来应该总是空的。

标签: android listview android-edittext


【解决方案1】:

我推测,您希望您的 Sapatos 显示在列表视图中,并且在执行文本编辑时更改某些属性。您错过(至少)以下内容:

  • 使用您的 Sapato 数据填充列表条目。列表条目被重用,如果转换视图为空,膨胀布局是正确的。但是您必须在字段中设置来自您的 Sapato 的数据(如果在任何情况下都必须这样做,则将所有 findVuewById 移到外面,并填充它们)
  • 由于重复使用列表视图,一旦编辑文本失去焦点,您就已将编辑的数据保存到 Sapato。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多