我创建了一个名为AddItemBaseAdapter的类,它在ListView中添加了一个新行。问题是,添加新行时,将删除上一行。要添加新行,我在Main.axml上有一个editTex和一个按钮。对于这种情况,最好使用ArrayAdapter或BaseAdapter继续使用?
AddItemBaseAdapter.cs:
public class AddItemBaseAdapter: BaseAdapter<string>
{
string textReceivedEditText;
Activity context;
public AddItemBaseAdapter(Activity context, string textReceivedEditText) : base()
{
this.context = context;
this.textReceivedEditText = textReceivedEditText;
}
public override long GetItemId(int position){
return position;
}
public override string this[int position] {
get { return textReceivedEditText; }
}
public override int Count {
get { return 1; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = convertView; // re-use an existing view, if one is available
if (view == null)
view = context.LayoutInflater.Inflate (Resource.Layout.newText, null);
view.FindViewById<TextView>(Resource.Id.singleText).Text = textReceivedEditText;
return view;
}
}
OnClick in MainActivity.cs
btnAddNewRow.Click += delegate(object sender, EventArgs e) {
string textFromEditText = FindViewById<EditText> (Resource.Id.editText).Text;
if(!(textFromEditText.Equals(string.Empty)))
{
_HistoryList = FindViewById<ListView>(Resource.Id.TextHistoryList);
_HistoryList.Adapter = new AddItemBaseAdapter(this, textFromEditText);
}
FindViewById<EditText> (Resource.Id.editText).Text = string.Empty;
};
答案 0 :(得分:0)
每次单击按钮时,您都在创建一个全新的AddItemBaseAdapter。
_HistoryList.Adapter = new AddItemBaseAdapter(this, textFromEditText);
您的适配器甚至无法存储多个项目。也许尝试使用(或至少研究)ArrayAdapter类来启动。然后,如果您需要更多功能,可以扩展它或编写自己的适配器。