如果您还记得来自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,username?感谢
答案 0 :(得分:3)
在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
。