【问题标题】:Showing data monodroid list view ( porting from monotouch )显示数据 monodroid 列表视图(从 monotouch 移植)
【发布时间】:2014-01-30 14:01:22
【问题描述】:

如果您还记得 xamarin 示例中的任务演示,我们可以将任务(如 id、title、sub)与

TableView.Source = new RootTableSource(tasks.ToArray ());

在 monodroid 中,它有点复杂。我确实使用 sqlite,这里是我的 monotouch sqlite 代码

{
    sqlCom.CommandText="SELECT * FROM Personel";

    using (SqliteDataReader dbReader = sqlCom.ExecuteReader ())
    {
        if (dbReader.HasRows)
        {
            int i;
            // Advance through each row
            tasks = new List<TaskX> ();
            while (dbReader.Read ())
            {     
                TaskX dtask= new TaskX() {Id = Convert.ToInt16( dbReader["ID"]), 
                    Name = String.Format (Convert.ToString (dbReader["UserName"])),
                    Notes=String.Format ( Convert.ToString (dbReader["Password"])),
                    Done=false};
                tasks.Add(dtask);
            };
        }
    };
    TableView.Source = new RootTableSource(tasks.ToArray ());
}

我注意到代码行采用源值

protected override void OnResume ()
{
    base.OnResume ();

    this._tasks = Tasky.BL.Managers.TaskManager.GetTasks();

    // create our adapter
    this._taskList = new Adapters.TaskListAdapter(this, this._tasks);

    //Hook up our adapter to our ListView
    this._taskListView.Adapter = this._taskList;
}

有什么方法可以在 android 列表视图上显示 sqlite 值,如 id、用户名?谢谢

【问题讨论】:

    标签: android sqlite android-listview xamarin.ios xamarin.android


    【解决方案1】:

    在 Android 上,您必须创建一个自定义适配器。查看此documentation at Xamarin,尤其是引用自定义行视图部分。

    你必须继承BaseAdapter,比如

    public class TaskAdapter : BaseAdapter<Task>
    {
    public override View GetView(int position, View convertView, ViewGroup parent)
       {
           var task = items[position];
       }
    }
    

    重要的部分是 GetView,您可以在其中访问任务列表,然后填充视图并返回:

    View view = convertView;
    if (view == null) // no view to re-use, create new
    view = context.LayoutInflater.Inflate(Resource.Layout.YourTaskView, null);
    view.FindViewById<TextView>(Resource.Id.TaskId).Text = task.Id.ToString();
    

    如果您从数据库中返回大量任务,请务必同时查看 CursorAdapter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多