【问题标题】:Get Data from SQLite into ArrayAdapter / ListView - Android C# Xamarin从 SQLite 获取数据到 ArrayAdapter / ListView - Android C# Xamarin
【发布时间】:2017-11-04 15:14:00
【问题描述】:

我试图将我的 SQLite 表中的数据放入 List<string>,然后放入 ArrayAdapter<string>ListView。 如何使用ArrayAdapter 将以下代码中的数据提取到ListView 中?

DB Helper.cs:

  public List<string> getNoteList()
    {
        List<string> noteList = new List<string>();
        SQLiteDatabase db = this.ReadableDatabase;
        ICursor cursor = db.Query(DB_TABLE, new string[] { DB_COLUMN}, null, null, null, null, null);
        while (cursor.MoveToNext())
        {
            int index = cursor.GetColumnIndex(DB_COLUMN);
            noteList.Add(cursor.GetString(index));
        }
        return noteList;
    }

如您所见,它被放入noteList,但我将如何编写数组适配器以便noteList 进入ListView

更新 1: MainActivity.cs

public void LoadNoteList()
        {
            List<string> noteList = dbHelper.getNoteList();
            adapter = new ArrayAdapter<string>(this, Resource.Layout.list_black_text, noteList);
            lvNotes.Adapter = adapter;
        }

错误:

【问题讨论】:

  • 不要使用ArrayAdapter,当您的数据基于Cursor 时使用SimpleCursorAdapter
  • 我将如何添加SimpleCursorAdapter
  • 致电ListView#setAdapter
  • 是的,但是声明SimpleCursorAdapter?的代码行是什么
  • 参见更新 1

标签: c# android sqlite listview android-arrayadapter


【解决方案1】:

将noteList的类型更改为ArrayList,并在ListView初始化后的地方添加follow line

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, noteList);
listview.setAdapter(adapter);

【讨论】:

  • 如何将noteList 更改为ArrayList
  • 参见更新 1
【解决方案2】:

试试这个 这里cards是我的linked-list

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_single_choice);
        for (MerchantCard card : cards) {
            arrayAdapter.add(card.getName());
        }

        ListView listView = (ListView) mView.findViewById(R.id.listView);
        listView.setAdapter(arrayAdapter);
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                selectedCardTypeId = cards.get(position).getId();
                Log.d("request", cards.get(position).getId() + " " + cards.get(position).getName());
            }
        });

【讨论】:

  • 参见更新 1
猜你喜欢
  • 2019-02-26
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
相关资源
最近更新 更多