Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 适配器在分配查询时返回null_C#_Android_Sqlite_Xamarin - Fatal编程技术网

C# 适配器在分配查询时返回null

C# 适配器在分配查询时返回null,c#,android,sqlite,xamarin,C#,Android,Sqlite,Xamarin,我从会议表中选择数据并为其分配适配器。这样做,我得到一个System.NullReferenceException:对象引用未设置为对象的实例 private void LoadData() { listSource = DBConnection.selectTable(); var adapter = new ListViewAdapter(this, listSource); lstViewData.Ad

我从会议表中选择数据并为其分配适配器。这样做,我得到一个System.NullReferenceException:对象引用未设置为对象的实例

private void LoadData()
        {
            listSource = DBConnection.selectTable();
            var adapter = new ListViewAdapter(this, listSource);
            lstViewData.Adapter = adapter;
        }

static public List<Meeting> selectTable()
        {
            try
            {
                using (var connection = new SQLiteConnection(System.IO.Path.Combine(Folder, "Organizer.db")))
                {
                    return connection.Table<Meeting>().ToList();
                }
            }
            catch (SQLiteException ex)
            {
                Log.Info("SQLiteEx", ex.Message);
                return null;
            }
        }

protected override void OnCreate(Bundle savedInstanceState)
            {
                EditText passwordEditText = FindViewById<EditText>(Resource.Id.passwordEditText);
                lstViewData = FindViewById<ListView>(Resource.Id.listView);
            }

我用这个项目来做类比:

首先,为什么要在
会议
上方添加活动属性,如果会议不是活动,请将其删除

然后我写了一个演示。下面是跑步截图

如果获得
System.NullReferenceException:对象引用未设置为对象的实例。

如果Listview为空,请注意,如果为空,则应将
Listview
FindViewById
移动到
LoadData
方法上方

    lstViewData = FindViewById<ListView>(Resource.Id.listView);
    edtidLogin = FindViewById<EditText>(Resource.Id.edtidLogin);
    edtidContact = FindViewById<EditText>(Resource.Id.edtidContact);
    edtPlace = FindViewById<EditText>(Resource.Id.edtPlace);
    var btnAdd = FindViewById<Button>(Resource.Id.btnAdd);


        db = new Database();
        db.createDatabase();
lstViewData=FindViewById(Resource.Id.listView);
edtidLogin=FindViewById(Resource.Id.edtidLogin);
edtidContact=findviewbyd(Resource.Id.edtidContact);
edtPlace=findviewbyd(Resource.Id.edtPlace);
var btnAdd=findviewbyd(Resource.Id.btnAdd);
db=新数据库();
db.createDatabase();
这是我的主要活动代码

     public class MainActivity : AppCompatActivity
{
    ListView lstViewData;
    List<Meeting> listSource = new List<Meeting>();
    Database db;
    EditText edtidLogin;
    EditText edtidContact;
    EditText edtPlace;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);
        lstViewData = FindViewById<ListView>(Resource.Id.listView);
         edtidLogin = FindViewById<EditText>(Resource.Id.edtidLogin);
         edtidContact = FindViewById<EditText>(Resource.Id.edtidContact);
         edtPlace = FindViewById<EditText>(Resource.Id.edtPlace);
        var btnAdd = FindViewById<Button>(Resource.Id.btnAdd);


        db = new Database();
        db.createDatabase();
      //  InsertData(db);


        btnAdd.Click += BtnAdd_Click;
        LoadData();
    }

    private void BtnAdd_Click(object sender, EventArgs e)
    {
    var meeting=    new Meeting() { idLogin= Int32.Parse( edtidLogin.Text), idContact= Int32.Parse(edtidContact.Text) , Place= edtPlace.Text };
        db.insertIntoTable(meeting);
        LoadData();
    }

    private void InsertData(Database db)
    {
        //throw new NotImplementedException();

        Meeting meeting = new Meeting() {
            idContact = 1,
            idLogin = 1,
            Place="Place1"
        };
         db.insertIntoTable(meeting);

        Meeting meeting2 = new Meeting()
        {
            idContact = 2,
            idLogin = 2,
            Place = "Place2"
        };
        db.insertIntoTable(meeting2);


        LoadData();
    }

    private void LoadData()
    {
        listSource = db.selectTable();
        var adapter = new ListViewAdapter(this, listSource);
        lstViewData.Adapter = adapter;
    }
public类main活动:AppCompatActivity
{
ListView-lstViewData;
List listSource=新列表();
数据库数据库;
EditText-edtidLogin;
EditText-edtidContact;
编辑文本位置;
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(这个,savedInstanceState);
//从“主”布局资源设置视图
SetContentView(Resource.Layout.activity_main);
lstViewData=FindViewById(Resource.Id.listView);
edtidLogin=FindViewById(Resource.Id.edtidLogin);
edtidContact=findviewbyd(Resource.Id.edtidContact);
edtPlace=findviewbyd(Resource.Id.edtPlace);
var btnAdd=findviewbyd(Resource.Id.btnAdd);
db=新数据库();
db.createDatabase();
//插入数据(db);
btnAdd.Click+=btnAdd\u Click;
LoadData();
}
私有void BtnAdd_单击(对象发送者,事件参数e)
{
var meeting=new meeting(){idLogin=Int32.Parse(edtilogin.Text),idContact=Int32.Parse(edtidContact.Text),Place=edtPlace.Text};
db.插入表(会议);
LoadData();
}
私有void InsertData(数据库数据库数据库)
{
//抛出新的NotImplementedException();
会议=新会议(){
idContact=1,
idLogin=1,
Place=“Place1”
};
db.插入表(会议);
会议2=新会议()
{
idContact=2,
idLogin=2,
Place=“Place2”
};
db.插入表(会议2);
LoadData();
}
私有void LoadData()
{
listSource=db.selectTable();
var adapter=新的ListViewAdapter(此为listSource);
lstViewData.Adapter=适配器;
}
这是我的演示。

是否
lstViewData
null?您在哪里声明和实例化它?
     public class MainActivity : AppCompatActivity
{
    ListView lstViewData;
    List<Meeting> listSource = new List<Meeting>();
    Database db;
    EditText edtidLogin;
    EditText edtidContact;
    EditText edtPlace;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);
        lstViewData = FindViewById<ListView>(Resource.Id.listView);
         edtidLogin = FindViewById<EditText>(Resource.Id.edtidLogin);
         edtidContact = FindViewById<EditText>(Resource.Id.edtidContact);
         edtPlace = FindViewById<EditText>(Resource.Id.edtPlace);
        var btnAdd = FindViewById<Button>(Resource.Id.btnAdd);


        db = new Database();
        db.createDatabase();
      //  InsertData(db);


        btnAdd.Click += BtnAdd_Click;
        LoadData();
    }

    private void BtnAdd_Click(object sender, EventArgs e)
    {
    var meeting=    new Meeting() { idLogin= Int32.Parse( edtidLogin.Text), idContact= Int32.Parse(edtidContact.Text) , Place= edtPlace.Text };
        db.insertIntoTable(meeting);
        LoadData();
    }

    private void InsertData(Database db)
    {
        //throw new NotImplementedException();

        Meeting meeting = new Meeting() {
            idContact = 1,
            idLogin = 1,
            Place="Place1"
        };
         db.insertIntoTable(meeting);

        Meeting meeting2 = new Meeting()
        {
            idContact = 2,
            idLogin = 2,
            Place = "Place2"
        };
        db.insertIntoTable(meeting2);


        LoadData();
    }

    private void LoadData()
    {
        listSource = db.selectTable();
        var adapter = new ListViewAdapter(this, listSource);
        lstViewData.Adapter = adapter;
    }