输入信息后,EditText 在列表视图中消失

EditText Inside a list view dissapere after inputing information

我有一个 listView,我在其中多次放置了现成的视图。这个视图里面有一个编辑文本。问题是,当我在编辑文本中输入值时,它们消失了。我猜是焦点问题,但我想不通。

这是我的 ListView 适配器中的 GetView 方法

public override View GetView(int position, View convertView, ViewGroup parent)
        {

            LayoutInflater layoutInflater = ((RegisterActivity3)context).LayoutInflater;
            View view = layoutInflater.Inflate(Resource.Layout.seekbarvalue_template, parent, false);

            TextView tvValueName = (TextView)view.FindViewById<TextView>(Resource.Id.tvValueName);
            TextView tvAnotation = (TextView)view.FindViewById<TextView>(Resource.Id.tvAnotation);
            TextView tvMetric = (TextView)view.FindViewById<TextView>(Resource.Id.tvMetric);
            EditText etVlaue = (EditText)view.FindViewById<EditText>(Resource.Id.etValue);
            
            ValueSeekBar temp = objects[position];
            if (temp != null)
            {
                tvValueName.Text = temp.ValueName;
                tvMetric.Text = temp.Metric;
                tvAnotation.Text = temp.Anotation;
            }
            return view;

        }

视频参考: https://im2.ezgif.com/tmp/ezgif-2-86070710e4.gif

您总是在创建新视图。除非 convertView 为 null,否则您不应该这样做。如果 convertView 不为空,您应该重用该视图。

最近还建议只使用 RecyclerView 而不是 ListView。

示例:

public override View GetView(int position, View convertView, ViewGroup parent){
    if(convertView == null) {
        LayoutInflater layoutInflater = ((RegisterActivity3)context).LayoutInflater;
        convertView = layoutInflater.Inflate(Resource.Layout.seekbarvalue_template, parent, false);
    }
    //Now update convertView
}