gpt4 book ai didi

java - 尝试从数据库捕获值并将其显示在 TextView 中时出现错误。安卓

转载 作者:行者123 更新时间:2023-12-02 06:13:26 25 4
gpt4 key购买 nike

我有一个 sqllite 数据库。我正在尝试从数据库中捕获值并将其显示在 TextView 中。我收到以下错误。

该行有错误

TextView result = (TextView) findViewById(R.id.textviewres);

完整的错误堆栈..

02-10 21:24:53.986: E/AndroidRuntime(27992): FATAL EXCEPTION: main
02-10 21:24:53.986: E/AndroidRuntime(27992): java.lang.RuntimeException: Unable to start activity ComponentInfo{lk.adspace.jaffnatemples/lk.adspace.jaffnatemples.Db_results}: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView
02-10 21:24:53.986: E/AndroidRuntime(27992): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
02-10 21:24:53.986: E/AndroidRuntime(27992): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
02-10 21:24:53.986: E/AndroidRuntime(27992): at android.app.ActivityThread.access$600(ActivityThread.java:162)
02-10 21:24:53.986: E/AndroidRuntime(27992): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
02-10 21:24:53.986: E/AndroidRuntime(27992): at android.os.Handler.dispatchMessage(Handler.java:107)
02-10 21:24:53.986: E/AndroidRuntime(27992): at android.os.Looper.loop(Looper.java:194)
02-10 21:24:53.986: E/AndroidRuntime(27992): at android.app.ActivityThread.main(ActivityThread.java:5371)
02-10 21:24:53.986: E/AndroidRuntime(27992): at java.lang.reflect.Method.invokeNative(Native Method)
02-10 21:24:53.986: E/AndroidRuntime(27992): at java.lang.reflect.Method.invoke(Method.java:525)
02-10 21:24:53.986: E/AndroidRuntime(27992): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
02-10 21:24:53.986: E/AndroidRuntime(27992): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
02-10 21:24:53.986: E/AndroidRuntime(27992): at dalvik.system.NativeStart.main(Native Method)
02-10 21:24:53.986: E/AndroidRuntime(27992): Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView
02-10 21:24:53.986: E/AndroidRuntime(27992): at lk.adspace.jaffnatemples.Db_results.onCreate(Db_results.java:52)
02-10 21:24:53.986: E/AndroidRuntime(27992): at android.app.Activity.performCreate(Activity.java:5122)
02-10 21:24:53.986: E/AndroidRuntime(27992): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
02-10 21:24:53.986: E/AndroidRuntime(27992): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
02-10 21:24:53.986: E/AndroidRuntime(27992): ... 11 more

数据库处理程序类..

    package lk.adspace.jaffnatemples;



import java.util.ArrayList;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class Dbhandler extends SQLiteOpenHelper {


private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "jaffnatempletest";

// Temple table name
private static final String TABLE_TEMPLE = "templ";


// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_TMPNAME = "temple_name";
private static final String KEY_TMPTYPE = "temple_type";
private static final String KEY_LATITUDE = "latitude";
private static final String KEY_LONGITUDE = "longitude";
private static final String KEY_IMGNAME = "image_name";
private static final String KEY_YEARBUILD = "year_build";
private static final String KEY_ADDRESS = "address";
private static final String KEY_CITY = "city";
private static final String KEY_EMAIL = "email";
private static final String KEY_WEB = "website";
private static final String KEY_TEL1 = "telephone1";
private static final String KEY_TEL2 = "telephone2";
private static final String KEY_DESCRI = "Description";
private final ArrayList<kovil> temple_list = new ArrayList<kovil>();


public Dbhandler (Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}



// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TEMPLE_TABLE = "CREATE TABLE " + TABLE_TEMPLE + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," + KEY_TMPNAME + " TEXT," + KEY_TMPTYPE + " TEXT," + KEY_LATITUDE + " TEXT," + KEY_LONGITUDE + " TEXT," + KEY_IMGNAME + " TEXT,"
+ KEY_YEARBUILD + " TEXT," + KEY_ADDRESS + " TEXT," + KEY_CITY + " TEXT," + KEY_EMAIL + " TEXT," + KEY_WEB + " TEXT," + KEY_TEL1 + " TEXT," + KEY_TEL2 + " TEXT,"
+ KEY_DESCRI + " TEXT" + ")";
db.execSQL(CREATE_TEMPLE_TABLE);
}


// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TEMPLE);

// Create tables again
onCreate(db);
}



// Adding new temple
public void Add_Temple(kovil Kovil) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();

values.put(KEY_TMPNAME, Kovil.gettemplename());
values.put(KEY_TMPTYPE, Kovil.gettempletype());
values.put(KEY_LATITUDE, Kovil.getlatitude());
values.put(KEY_LONGITUDE, Kovil.getlongitude());
values.put(KEY_IMGNAME, Kovil.getimage_name());
values.put(KEY_YEARBUILD, Kovil.getyear_build());
values.put(KEY_ADDRESS, Kovil.getaddress());
values.put(KEY_CITY, Kovil.getcity());
values.put(KEY_EMAIL, Kovil.getemail());
values.put(KEY_WEB, Kovil.getwebsite());
values.put(KEY_TEL1, Kovil.gettelephone1());
values.put(KEY_TEL2, Kovil.gettelephone2());
values.put(KEY_DESCRI, Kovil.getDescription());

// Inserting Row
db.insert(TABLE_TEMPLE, null, values);
db.close(); // Closing database connection
}






// Getting single contact
kovil Get_Temple(int id) {
SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(TABLE_TEMPLE, new String[] { KEY_ID,
KEY_TMPNAME, KEY_TMPTYPE, KEY_LATITUDE, KEY_LONGITUDE, KEY_IMGNAME, KEY_YEARBUILD, KEY_ADDRESS, KEY_CITY, KEY_EMAIL, KEY_EMAIL, KEY_WEB, KEY_TEL1, KEY_TEL2, KEY_DESCRI }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();

kovil Kovil = new kovil(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7), cursor.getString(8), cursor.getString(9), cursor.getString(10), cursor.getString(11), cursor.getString(12), cursor.getString(13));
// return contact
cursor.close();
db.close();

return Kovil;
}





// Getting All Contacts
public ArrayList<kovil> Get_Temple() {
try {
temple_list.clear();

// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_TEMPLE;

SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
System.out.print("CALLED");
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
kovil Kovil = new kovil();
Kovil.setID(Integer.parseInt(cursor.getString(0)));
System.out.print("CALLED"+cursor.getString(0));
Kovil.settemplename(cursor.getString(1));
Kovil.settempletype(cursor.getString(2));
Kovil.setlatitude(cursor.getString(3));
Kovil.setlongitude(cursor.getString(4));
Kovil.setimage_name(cursor.getString(5));
Kovil.setyear_build(cursor.getString(6));
Kovil.setaddress(cursor.getString(7));
Kovil.setcity(cursor.getString(8));
Kovil.setemail(cursor.getString(9));
Kovil.setwebsite(cursor.getString(10));
Kovil.settelephone1(cursor.getString(11));
Kovil.settelephone2(cursor.getString(12));
Kovil.setDescription(cursor.getString(13));



// Adding contact to list
temple_list.add(Kovil);
} while (cursor.moveToNext());
}

// return contact list
cursor.close();
db.close();
return temple_list;
} catch (Exception e) {
// TODO: handle exception
Log.e("all_temples", "" + e);
}

return temple_list;
}

public String collect(){

SQLiteDatabase ourDatabase = this.getWritableDatabase();
String result="";
String []column =new String[]{KEY_ID,KEY_TMPNAME,KEY_TMPTYPE,KEY_LATITUDE,KEY_LONGITUDE,KEY_IMGNAME,KEY_YEARBUILD,KEY_ADDRESS,KEY_CITY,KEY_EMAIL,KEY_WEB,KEY_TEL1,KEY_TEL2,KEY_DESCRI};
Cursor c=ourDatabase.query("templ", column, null, null, null, null,null, null);
//Cursor c=ourDatabase.query(
c.moveToFirst();
int iKEY_ID = c.getColumnIndex(KEY_ID);
int iKEY_TMPNAME= c.getColumnIndex(KEY_TMPNAME);
int iKEY_TMPTYPE= c.getColumnIndex(KEY_TMPTYPE);
for (c.moveToFirst();!c.isAfterLast();c.moveToNext()){
//for (int x=0;x<5;x++){
result = result+c.getString(iKEY_ID)+" "+c.getString(iKEY_TMPNAME)+" \t\t\t\t"+c.getString(iKEY_TMPTYPE)+" \n";
}
return result;

}


// Getting contacts Count
public int Get_Total_Temple() {
String countQuery = "SELECT * FROM " + TABLE_TEMPLE;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
int count = cursor.getCount();
cursor.close();
db.close();
return count;
}


}

我的主要显示类(Db_results.java)

    package lk.adspace.jaffnatemples;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.provider.ContactsContract.Data;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class Db_results<LayoutInfalter> extends Activity {



Temple_Adapter tAdapter;

ArrayList<kovil> temple_data = new ArrayList<kovil>();
ListView temple_listview;
Dbhandler dbhand = new Dbhandler(this);



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

temple_listview = (ListView) findViewById(R.id.list);
kovil insertData = new kovil("temple_name", "temple_type", "latitude", "longitude", "image_name", "year_build", "address",
"city", "email", "website", "telephone1", "telephone2", "Description");
Dbhandler dbhand = new Dbhandler(this);
dbhand .Add_Temple(insertData );


kovil insertData2 = new kovil("temple_name2", "temple_type2", "latitude2", "longitude2", "image_name2", "year_build2", "address2",
"city2", "email2", "website2", "telephone12", "telephone22", "Description2");

dbhand .Add_Temple(insertData2 );

// int count =dbhand .Get_Total_Temple();

// TextView textView = (TextView) findViewById(R.id.count);

TextView result = (TextView) findViewById(R.id.textviewres);

//String c=collect();
result.setText(dbhand.collect());



// i want to display all the values in a list over here.
System.out.print("CALLING View_all_temples");
//View_all_temples();


}



public void View_all_temples(){

System.out.print("iNTO View_all_temples STAGE 1");
//temple_data.clear();

ArrayList<kovil> temple_array_from_db = dbhand.Get_Temple();
System.out.print("CALLED View_all_temples");
for (int i = 0; i < temple_array_from_db.size(); i++) {

System.out.print("INTO LOOP");

int tidno = temple_array_from_db.get(i).getID();
String tempname = temple_array_from_db.get(i).gettemplename();
String city = temple_array_from_db.get(i).getcity();
String telphon = temple_array_from_db.get(i).gettelephone1();
kovil kov = new kovil();
kov.setID(tidno);
kov.settemplename(tempname);
kov.setcity(city);
kov.settelephone1(telphon);

temple_data.add(kov);


}
dbhand.close();
//tAdapter = new Temple_Adapter(Db_results.this, R.layout.display_db_result,temple_data);
//tAdapter = new Temple_Adapter(Db_results.this, R.layout.display_db_result);
//temple_listview.setAdapter(tAdapter);
tAdapter.notifyDataSetChanged();


}



public class Temple_Adapter extends ArrayAdapter<kovil> {

Activity activity;
int layoutResourceId;
kovil user;
LayoutInfalter mInfalter;
ArrayList<kovil> data = new ArrayList<kovil>();
ViewHolder holder;
public Temple_Adapter(Context act,
int layoutResourceId, ArrayList<kovil> data) {
super(act,layoutResourceId,data);
tAdapter = new Temple_Adapter(Db_results.this, R.layout.display_db_result,temple_data);
this.layoutResourceId = layoutResourceId;
this.activity = (Activity) act;
this.data = data;

}



@SuppressWarnings({ "unchecked", "null" })
public View getView(int position, View convertView, ViewGroup parent) {


if (convertView == null) {
LayoutInflater mInflater = null;
convertView = mInflater.inflate(R.layout.display_db_result,parent, false);
holder = new ViewHolder();
holder.tv = (TextView) convertView.findViewById(R.id.textView1);
convertView.setTag(holder); // set tag on view
} else {
holder = (ViewHolder) convertView.getTag();
}

holder.tv.setText((CharSequence) data.get(position).temple_name);
return convertView;
}
public class ViewHolder
{
TextView tv;
}



}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

list 文件

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="lk.adspace.jaffnatemples"
android:versionCode="1"
android:versionName="1.0" xmlns:tools="http://schemas.android.com/tools">

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<permission android:name="lk.adspace.jaffnatemples.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />

<uses-permission android:name="lk.adspace.jaffnatemples.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

<uses-feature android:glEsVersion="0x00020000"
android:required="true"/>




<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="lk.adspace.jaffnatemples.Main"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Search"/>
<activity
android:name="lk.adspace.jaffnatemples.Search_result"
android:label="@string/app_name" />

<activity android:name="lk.adspace.jaffnatemples.Map_view"
android:label="@string/app_name" />


<activity android:name="lk.adspace.jaffnatemples.Db_results"
android:label="@string/app_name" />


<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyBbouC2RTAM-AC2Vh6MYFF2JrzFGDg" />
</application>

</manifest>

显示Db_result.xml

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textviewres"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true" >

</ListView>

<TextView
android:id="@+id/textviewres"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="TextView" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="38dp"
android:text="TextView" />

</RelativeLayout>

新错误堆栈

02-10 21:45:31.473: E/AndroidRuntime(31356): FATAL EXCEPTION: main
02-10 21:45:31.473: E/AndroidRuntime(31356): java.lang.RuntimeException: Unable to start activity ComponentInfo{lk.adspace.jaffnatemples/lk.adspace.jaffnatemples.Db_results}: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.ListView
02-10 21:45:31.473: E/AndroidRuntime(31356): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
02-10 21:45:31.473: E/AndroidRuntime(31356): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
02-10 21:45:31.473: E/AndroidRuntime(31356): at android.app.ActivityThread.access$600(ActivityThread.java:162)
02-10 21:45:31.473: E/AndroidRuntime(31356): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
02-10 21:45:31.473: E/AndroidRuntime(31356): at android.os.Handler.dispatchMessage(Handler.java:107)
02-10 21:45:31.473: E/AndroidRuntime(31356): at android.os.Looper.loop(Looper.java:194)
02-10 21:45:31.473: E/AndroidRuntime(31356): at android.app.ActivityThread.main(ActivityThread.java:5371)
02-10 21:45:31.473: E/AndroidRuntime(31356): at java.lang.reflect.Method.invokeNative(Native Method)
02-10 21:45:31.473: E/AndroidRuntime(31356): at java.lang.reflect.Method.invoke(Method.java:525)
02-10 21:45:31.473: E/AndroidRuntime(31356): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
02-10 21:45:31.473: E/AndroidRuntime(31356): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
02-10 21:45:31.473: E/AndroidRuntime(31356): at dalvik.system.NativeStart.main(Native Method)
02-10 21:45:31.473: E/AndroidRuntime(31356): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.ListView
02-10 21:45:31.473: E/AndroidRuntime(31356): at lk.adspace.jaffnatemples.Db_results.onCreate(Db_results.java:36)
02-10 21:45:31.473: E/AndroidRuntime(31356): at android.app.Activity.performCreate(Activity.java:5122)
02-10 21:45:31.473: E/AndroidRuntime(31356): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
02-10 21:45:31.473: E/AndroidRuntime(31356): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
02-10 21:45:31.473: E/AndroidRuntime(31356): ... 11 more

有人可以帮我解决这个错误吗?

最佳答案

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textviewres"
android:layout_width="match_parent"
android:layout_height="match_parent" >

从中删除 ID

相对布局和textview都有相同的id,当你在 Activity 中获取它时,它会返回相对布局对象。

将其从相对布局中删除,只需将其保留在 TextView 中

关于java - 尝试从数据库捕获值并将其显示在 TextView 中时出现错误。安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21681910/

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