我创建了一个名为AddItemBaseAdapter的类,它在ListView中添加了一个新行。问题是,当添加一个新行时,前一行被删除。要添加一个新行,我在Main.axml上有一个editTex和一个按钮。对于这种情况,最好使用ArrayAdapter或BaseAdapter继续使用?带有BaseAdapter的ListView,只显示一行
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在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;
};
@CarCzar但是,如果我删除'new'不起作用 – 2014-09-02 17:16:19
当您第一次创建布局时,您将需要创建一个新的适配器,但是一旦您有了一个适配器,就可以重新使用它并将其他字符串存储在数据中结构如数组。 TBH,让你的BaseAdapter按照你的意愿工作还有更多的工作要做。从ArrayAdapter开始。 – CarCzar 2014-09-02 17:20:37