gpt4 book ai didi

java - 为什么光标索引越界?

转载 作者:行者123 更新时间:2023-12-02 11:47:33 24 4
gpt4 key购买 nike

我试图借助光标显示存储在表中的字符串。我从表中取出一行,但是当我执行“getString()”函数时,它超出了范围。

package com.example.mridul.eventmanager;

import android.database.Cursor;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class DetailActivity extends AppCompatActivity {

DatabaseHelper db = new DatabaseHelper(this);
TextView textId,textName, textDesc, textVenue, textType;
ImageView ePic;
int id;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);

textId = (TextView) findViewById(R.id.textView12);
textName = (TextView) findViewById(R.id.textView13);
textDesc = (TextView) findViewById(R.id.textView14);
textVenue = (TextView) findViewById(R.id.textView15);
textType = (TextView) findViewById(R.id.textView16);

ePic = (ImageView) findViewById(R.id.imageView2);

Cursor data = db.getRowDetail(id);

textId.setText(data.getString(0));
textName.setText(data.getString(1));
textDesc.setText(data.getString(2));
textVenue.setText(data.getString(3));
textType.setText(data.getString(4));

ePic.setImageURI(Uri.parse(data.getString(5)));

Toast.makeText(getApplicationContext(),"columns entered in list", Toast.LENGTH_SHORT).show();







}
}

游标数据取自下面给出的 DatabaseHelper 类

公共(public)光标 getRowDetail(int id){

SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT * FROM "+EVENT_TABLE_NAME+" WHERE "+EVENT_ID+" = '"+id+"'";
Cursor data = db.rawQuery(query,null);
return data;

}

id 变量取自不同的类。下面给出了其中的一小部分。

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long id) {

String event_name = adapterView.getItemAtPosition(i).toString();
Cursor data = dp.getEventId(event_name);
int itemid=-1;
while(data.moveToNext()){
itemid = data.getInt(0);

}
if( itemid >0){

detailObj.id=itemid;

Intent eventDetail = new Intent(LoginActivity.this, DetailActivity.class);
LoginActivity.this.startActivity(eventDetail);
Toast.makeText(getApplicationContext(), "Item id "+itemid, Toast.LENGTH_SHORT).show();

}

我收到的错误是..

 FATAL EXCEPTION: main
Process: com.example.mridul.eventmanager, PID: 4520
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mridul.eventmanager/com.example.mridul.eventmanager.DetailActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 0
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339)

最佳答案

在DetailActivity中Cursor data = db.getRowDetail(id);这一行中的id值没有定义。

这里int id;

这可能是一个问题

关于java - 为什么光标索引越界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48100188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com