我創建了一個名爲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