【问题标题】:when listview scroll that time edittext set default value当listview滚动那个时候edittext设置默认值
【发布时间】:2013-01-23 11:58:03
【问题描述】:

我有带有 edittext 和 -/+ 按钮的列表视图。当我点击按钮时,更改 edittext 值,如 increment/decrement

当我设置像 5 这样的值并滚动列表视图时,edittext 设置值作为 默认值像 0.

我就是这样用的

public View getView(final int position, View convertView,ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View connection;
        final ViewHolder holder;
        connection = new View(context);         
        connection = inflater.inflate(R.layout.list_row_modified, null);
        holder = new ViewHolder();
        holder.up = (Button) connection.findViewById(R.id.btn_plus);
        holder.down = (Button) connection.findViewById(R.id.btn_minus);
        holder.date = (TextView) connection.findViewById(R.id.text_date);

        //onClick with holder.up/holder.down

        connection.setTag(holder);
        return connection;
    }

【问题讨论】:

    标签: android android-layout listview scrollview


    【解决方案1】:

    在您的情况下的问题是,您打开列表视图的每个 tiem 都会调用您的 getView(这很好),而且当您向上/向下滚动时也会调用您的 getView。为了减少内存使用,listview会销毁所有超出listview可见部分的元素,并在你往回滚动时重新创建。

    所以,为了避免这种情况,您可以使用:

    if (convertView == null) {
        holder = new ViewHolder();
        holder.up = (Button) connection.findViewById(R.id.btn_plus);
        holder.down = (Button) connection.findViewById(R.id.btn_minus);
        holder.date = (TextView) connection.findViewById(R.id.text_date);  
    }
    
    convertView.setTag(holder);
    return convertView;
    

    有关如何在列表视图中创建编辑文本的详细教程,请参阅:http://vikaskanani.wordpress.com/2011/07/27/android-focusable-edittext-inside-listview/

    【讨论】:

    • 尝试编辑答案中的解决方案。目标是您只在第一次创建列表视图时创建您的编辑文本。希望它有帮助..
    • 我的 +1,问得很好。
    • 返回连接;应该改成返回convertView; .否则这将不起作用
    • @AsankaSenavirathna,你说得对,我编辑了我的答案。谢谢。
    • @Harshid,尝试使用我给你的页面上的示例。一切都描述正确。
    【解决方案2】:

    您错误地使用了 ViewHolder 模式。因为您有一个带有 EditText 的小列表,所以您甚至不需要它。

    正如 Milos 所说,它会回收您的列表项,以便在调用 getView() 时将您的值设置为 0。您必须保留对这些值的一些引用并将它们设置在 getView() 方法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-18
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      相关资源
      最近更新 更多