2014-09-02 65 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