输入信息后,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;
}
您总是在创建新视图。除非 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
}
我有一个 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;
}
您总是在创建新视图。除非 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
}