C# 如何在Xamarin中使用数据库项来填充ListView?
我无法用数据库项填充ListView sqlite中用于get表的函数:C# 如何在Xamarin中使用数据库项来填充ListView?,c#,android,sqlite,xamarin.android,C#,Android,Sqlite,Xamarin.android,我无法用数据库项填充ListView sqlite中用于get表的函数: public Android.Database.ICursor getFornecedores() { Android.Database.ICursor temp = null; try { sqlQuery = "SELECT * FROM Fornecedor;"; t
public Android.Database.ICursor getFornecedores()
{
Android.Database.ICursor temp = null;
try
{
sqlQuery = "SELECT * FROM Fornecedor;";
temp = sqlTemp.RawQuery(sqlQuery, null);
if (!(temp != null))
Console.WriteLine("Deu pau");
}
catch(SQLiteException e)
{
Console.WriteLine("Erro = " + e.Message);
}
return temp;
}
我尝试填充listView的函数:
public void loadListView()
{
Android.Database.ICursor fornecedores;
DataBaseHandler db = new DataBaseHandler();
fornecedores = db.getFornecedores();
SimpleCursorAdapter adapter;
cadastroListView.Adapter = new SimpleCursorAdapter(this, Android.Resource.Layout.SimpleDropDownItem1Line, fornecedores,
new string[] { "nome" }, new int[] { Android.Resource.Id.Text1 });
}
请帮帮我!
谢谢 List mItems=new List();
var listview=findviewbyd(Resource.Id.listview);
//从数据库获取数据。我正在使用sqlite.cs从数据库中获取数据。
//你可以使用你正在使用的技巧。
使用(var conn=new SQLite.SQLiteConnection(dbPath))
{
尝试
{
var cmd=new SQLite.SQLiteCommand(conn);
cmd.CommandText=“从历史中选择*”;
int i=0;
var r=cmd.ExecuteQuery();
foreach(r中的var项)
{
添加(item.word);
}
}
捕获(例外e)
{
}
}
ArrayAdapter=新的ArrayAdapter(这个,Android.Resource.Layout.SimpleListItem1,mItems);
Adapter=适配器;
您是否收到错误?上面代码的结果是什么?停止并返回此错误:System.NullReferenceException:对象引用未设置为对象的实例06-10 16:30:52.053 E/mono(350):06-10 16:30:52.053 E/mono(350):未处理的异常:06-10 16:30:52.053 E/mono(350):System.NullReferenceException:对象引用未设置为object06-10 16:30:52.053 E/mono(350):位于C:\Users\FelipeLuiz\documents\visual studio 2010\Projects\Demeter\Demeter\DataBaseHandler中的Demeter.DataBaseHandler.getFornecedores()[0x0000f]。cs:206 06-10 16:30:52.053 E/mono(350):位于C:\Users\FelipeLuiz\documents\visual studio 2010\Projects\Demeter\Demeter\Cadstrofornecedor.cs:5806-10 16:30:52.053 E/mono(350):位于Demeter.Cadstrofornecedor.OnCreate(Android.OS.Bundle)[0x000d8]在C:\Users\FelipeLuiz\documents\visualstudio 2010\Projects\Demeter\Demeter\CadastroFornecedor.cs:36 06-10 16:30:52.053 E/mono(350):在Android.App.Activity.n_OnCreate_Landroid_os_Bundle(IntPtr jnienv,IntPtr native_uthis,IntPtr native_usavedinstate)[0x00010]在/Users/builder/data/lanes/monodroid-lion-bs1/95789e18/source/monodroid/src/Mono.Android/platforms/Android-8/src/generated/Android.App.Activity.cs:149006-10 16:30:52.053 E/Mono(350):at(包装器动态方法)对象:553bc2f3-2687-4f19-8429-2e9614a41c6a(intptr,intptr,intptr)06-10 16:30:52.053 I/Mono(350):[错误]致命的未处理异常:System.NullReferenceException:对象引用未设置为对象的实例
List<string> mItems = new List<string>();
var listview = FindViewById<ListView>(Resource.Id.listview);
//fetching data from database. I am using sqlite.cs to fetch data from database.
//You can use your technique which you are using.
using (var conn = new SQLite.SQLiteConnection(dbPath))
{
try
{
var cmd = new SQLite.SQLiteCommand(conn);
cmd.CommandText = "select * from history";
int i = 0;
var r = cmd.ExecuteQuery<hist>();
foreach (var item in r)
{
mItems.Add(item.word);
}
}
catch (Exception e)
{
}
}
ArrayAdapter<string> adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, mItems);
listview.Adapter = adapter;