当listview滚动时,edittext设置默认值

时间:2013-01-23 11:58:03

标签: android android-layout listview scrollview

我有listtext和edittext以及 - / + 按钮。当我点击按钮更改edittext值时,如递增/递减

当我将值设置为 5 时,将listview的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;
    }

2 个答案:

答案 0 :(得分:0)

你的案例中的问题是你打开listview时你的getView被调用(这很好),但是当你向上/向下滚动时也是如此。为了减少内存使用量,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;

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

答案 1 :(得分:0)

您错误地使用了ViewHolder模式。因为你有一个包含EditText的小列表,所以你根本不需要它。

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