Android SQLite 在选定的微调器上显示特定行

Posted

技术标签:

【中文标题】Android SQLite 在选定的微调器上显示特定行【英文标题】:Android SQLite show specific row on spinner selected 【发布时间】:2021-10-01 01:57:08 【问题描述】:

我从 3 个难度中获得了创纪录的高分:简单、中等、困难。所有数据进入 1 个表。我有 1 个活动来显示所有的高分。

在那个活动中,我创建了一个微调器,让用户选择他们想要显示的难度数据。所有数据都会显示在listview(ScoreView)中。

这里我要做的是在微调器上选择用户时显示特定数据。

有什么办法吗?

这是我的数据库:

 public Data_Collect[] getScore() 
    Data_Collect[] data = null;
    String[] colums = "Difficult", "BRedo", "BCorrect";
    String orderBy = "Difficult ASC";
    Cursor cursor = getReadableDatabase().query(
            "score",
            colums,
            null, null, null, null,
            orderBy);
    if (cursor.getCount()>0 && cursor.moveToNext()) 

        data = new Data_Collect[cursor.getCount()];
        int counter = 0;

        do 

            data[counter] = new Data_Collect(
                    cursor.getString(0),
                    cursor.getInt(1),
                    cursor.getInt(2));
            counter++;

        
        while (cursor.moveToNext());
    

    cursor.close();
    return data;

这是我的活动:

ArrayAdapter<String> adapterDifficult = new ArrayAdapter<>(
            Score.this, android.R.layout.simple_list_item_1, Difficulty
    );
    SpinnerDifficulty.setAdapter(adapterDifficult);
    SpinnerDifficulty.setOnItemSelectedListener(this);

    new Thread(new Runnable() 
        @Override
        public void run() 
            RecordDB db = new RecordDB(Score.this);
            Data_Collect[] data = db.getScore();
            db.close();

            if (data != null) 
                adapter = new RecordAdapter(Score.this, R.layout.recordlist, R.id.text_Difficulty, data);
                runOnUiThread(new Runnable() 
                    @Override
                    public void run() 
                        ScoreView.setAdapter(adapter);
                    
                );
            
        
    ).start();




@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 


@Override
public void onNothingSelected(AdapterView<?> parent) 


【问题讨论】:

嗨,卡尔文。我认为你最好将你的难度级别传递给 onItemSelect 的 getScore() 方法——例如getScodre(Difficult) — 并获取此级别的特定数据,然后通知适配器显示所需的数据。 嗨,你的意思是把Runnable放在onItemSelect里面吗?但是如何显示特定的行? 您应该更改查询并获取特定列,因为我意识到您将所需数据存储在特定列中:Cursor cursor = getReadableDatabase().query("score", colums, null, null, null , null, orderBy); to ——> Cursor cursor = getReadableDatabase().query("score", "Difficult", null, null, null, null, orderBy); OIC,非常感谢! 【参考方案1】:

定义困难 = '简单'

Data_Collect[] data = null;
String[] colums = "Difficult", "BRedo", "BCorrect";
String orderBy = "Difficult ASC";
Cursor cursor = getReadableDatabase().query(
        "score",
        colums,
        "Difficult ='Easy'", null, null, null,
        orderBy);

【讨论】:

以上是关于Android SQLite 在选定的微调器上显示特定行的主要内容,如果未能解决你的问题,请参考以下文章

选定的项目未在微调器 kotlin 中显示

如何使用 SimpleAdapter 在微调器中设置选择?

创建应用程序按钮未生成应用程序,卡在微调器上

Android:将 id 和 name 从微调器中的选定项目放入两个不同的 textViews

css3微调器上的抽搐动画

以编程方式设置微调器的选定项