【问题标题】:How popule ListView with database items in Xamarin?Xamarin 中如何使用数据库项填充 ListView?
【发布时间】:2013-06-03 20:46:26
【问题描述】:

我无法用数据库项填充 ListView。

sqlite 中获取表的函数:

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 });


        }

请帮帮我! 谢谢!

【问题讨论】:

  • 您是否收到错误消息?上面代码的结果是什么?
  • 它停止并返回此错误:System.NullReferenceException: 对象引用未设置为对象的实例 06-10 16:30:52.053 E/mono (350): 06-10 16:30 :52.053 E/mono (350): Unhandled Exception: 06-10 16:30:52.053 E/mono (350): System.NullReferenceException: Object reference not set to an instance of an object
  • 06-10 16:30:52.053 E/mono (350): 在 C:\Users\FelipeLuiz\documents\visual studio 2010\Projects\ 中的 Demeter.DataBaseHandler.getFornecedores () [0x0000f] Demeter\Demeter\DataBaseHandler.cs:206 06-10 16:30:52.053 E/mono (350): 在 C:\Users\FelipeLuiz\documents\visual studio 2010\Projects 中的 Demeter.CadastroFornecedor.loadListView () [0x00007] \Demeter\Demeter\CadastroFornecedor.cs:58
  • 06-10 16:30:52.053 E/mono (350): 在 C:\Users\FelipeLuiz\documents\ 中的 Demeter.CadastroFornecedor.OnCreate (Android.OS.Bundle bundle) [0x000d8] Visual Studio 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__this, IntPtr native_savedInstanceState) [0x00010 ] 在 /Users/builder/data/lanes/monodroid-lion-bs1/95789e18/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.App.Activity.cs:1490 中跨度>
  • 06-10 16:30:52.053 E/mono (350): at (wrapper dynamic-method) object:553bc2f3-2687-4f19-8429-2e9614a41c6a (intptr,intptr,intptr) 06- 10 16:30:52.053 I/mono (350): [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: 对象引用未设置为对象的实例

标签: c# android sqlite xamarin.android


【解决方案1】:
        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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多