如何从sqlite数据库获取ID值(android studio java)

如何从sqlite数据库获取ID值(android studio java),java,android,string,int,return-value,Java,Android,String,Int,Return Value,当我尝试单击listview中的某个名称时,我希望它从其名称返回ID(在Toast文本中),但无论我在listview中单击哪个名称,都会得到结果“0”,您能帮我修复代码吗?谢谢 MainActivity.java public void toastMessage(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } public void toastMessageInt(int me

当我尝试单击listview中的某个名称时,我希望它从其名称返回ID(在Toast文本中),但无论我在listview中单击哪个名称,都会得到结果“0”,您能帮我修复代码吗?谢谢

MainActivity.java

public void toastMessage(String message) {
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}

public void toastMessageInt(int message) {
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}

public void refreshPage() {
    listView = findViewById(R.id.listView);
    ArrayList<String> arrayList = new ArrayList<>();
    Cursor getView = myDB.showListView();

    while (getView.moveToNext()) {
        arrayList.add(getView.getString(1));
        ListAdapter listAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,arrayList);
        listView.setAdapter(listAdapter);
    }

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String name = parent.getItemAtPosition(position).toString();
            int data = myDB.GetId(name);
            String dataToString = String.valueOf(data);
            toastMessage(dataToString); //here always return "0"
        }
    });
}
试试这个:

Cursor getNoteId=myDB.rawQuery(“从记事本数据中选择id,其中记事本类似+”““+currentNote+””,null);


编辑:
等等…现在我注意到你返回了什么…
getColumnIndex()
返回特定列的索引,其中您的
id
列始终为0,并且不会更改。 您创建的表有两列:
id
(索引0)和
notepad
(索引1)
您应该使用
cursor.getInt(0)
并在调用
cursor.moveToFirst()之前使用
cursor.getInt(0)
这样做:

    if (getNoteId != null && getNoteId.moveToFirst() {
       return getNoteId.getInt(0)
    } else {
       return null;  // because you have to return something
    }
对不起,先生,如果“currentNote”彼此有相同的名称,它将返回相同的ID值,无论我在哪里单击该名称,您能帮我一下吗?我知道的只是在“currentNote”后面加上“and ID=”“+ID+””,但当您单击“name”
光标时,我不知道如何获取ID“使用此值。现在您只需使用
cursor.getInt(0)
,就可以只获得其中的第一个。您可以通过循环获取所有值(例如
do while
for
)。否则,如果您真的想要特定“名称”的特定“id”,那么您可以向数据库添加另一个标识符(列),这将帮助您区分字段,并且用户将看不到它。
    if (getNoteId != null && getNoteId.moveToFirst() {
       return getNoteId.getInt(0)
    } else {
       return null;  // because you have to return something
    }