2014-09-02 63 views
0

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

};

+0

@CarCzar但是,如果我刪除'new'不起作用 – 2014-09-02 17:16:19

+0

當您第一次創建佈局時,您將需要創建一個新的適配器,但是一旦您有了一個適配器,就可以重新使用它並將其他字符串存儲在數據中結構如數組。 TBH,讓你的BaseAdapter按照你的意願工作還有更多的工作要做。從ArrayAdapter開始。 – CarCzar 2014-09-02 17:20:37

回答

0

您每次單擊按鈕時都會創建一個全新的AddItemBaseAdapter。

_HistoryList.Adapter = new AddItemBaseAdapter(this, textFromEditText);

適配器甚至沒有存儲多個項目的能力,因爲它現在站立。也許嘗試使用(或至少研究)ArrayAdapter類來啓動。那麼如果你需要進一步的功能,你可以擴展它或者編寫你自己的適配器。

+0

你知道任何教程嗎?因爲我研究了所有使用靜態樣本數據:'String [] List = {「a」,「b」,「c」};'' – 2014-09-02 17:37:55