想通过ListActivity显示从数据库中查询出的公交车的车次、时间、票价和路线,查询的关键字已经从主窗口传递过来,数据表已经保存在res下的raw文件夹下了,但始终不对,终止退出,小弟还看不明白Logcat里的错误信息,大家帮帮我看看错在哪了?
BusNumInfo.java
package net.blogjava.mobile;import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;import net.blogjava.mobile.db.DBService;import android.app.Activity;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;public class BusNumInfo extends ListActivity
{
private TextView tvBusNumber,tvBusTime,tvTicketPrice,tvBusLine;
private ImageView ivBusNumItem;
private String queryValue;
private final String DATABASE_PATH = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath();
private final String DATABASE_FILENAME = "businfo.db";
private SQLiteDatabase database;
private BusDataAdapter busdataAdapter;
private String databaseFilename;
private SQLiteDatabase openDatabase()
{
try
{
databaseFilename = DATABASE_PATH+"/"+DATABASE_FILENAME;
if(!(new File(databaseFilename).exists()))
{
InputStream is = getResources().openRawResource(R.raw.businfo);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
while((count=is.read(buffer))>0)
{
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);
return database;
}
catch(Exception e)
{
}
return null;
}
public class BusDataAdapter extends CursorAdapter
{
private LayoutInflater layoutInflater;
public BusDataAdapter(Context context, Cursor c, boolean autoRequery)
{
super(context, c, autoRequery);
layoutInflater = (LayoutInflater)context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
private void setView(View view,Cursor cursor)
{
ivBusNumItem = (ImageView)findViewById(R.id.ivBusNumItem);
tvBusNumber = (TextView)findViewById(R.id.tvBusNumber);
tvBusTime = (TextView)findViewById(R.id.tvBusTime);
tvTicketPrice = (TextView)findViewById(R.id.tvTicketPrice);
tvBusLine = (TextView)findViewById(R.id.tvBusLine);
ivBusNumItem.setImageResource(R.drawable.van);
tvBusNumber.setText(cursor.getString(cursor.getColumnIndex("BUSNUM")));
tvBusTime.setText(cursor.getString(cursor.getColumnIndex("TIME")));
tvTicketPrice.setText(cursor.getString(cursor.getColumnIndex("PRICE")));
tvBusLine.setText(cursor.getString(cursor.getColumnIndex("FORWARDLINE")));
}
@Override
public void bindView(View view, Context context, Cursor cursor)
{
setView(view,cursor);
} @Override
public View newView(Context context, Cursor cursor, ViewGroup parent)
{
View view = layoutInflater.inflate(R.layout.busnumresult, null);
setView(view,cursor);
return view;
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
queryValue = bundle.getString("busnumber");
database = openDatabase();
String sql = "select ID,BUSNUM,TIME,PRICE,FORWARDLINE from businfo where BUSNUM like ?";
Cursor cursor = database.rawQuery(sql, new String[]{queryValue});
busdataAdapter = new BusDataAdapter(this,cursor,true);
setListAdapter(busdataAdapter);
}
} 找不到问题在哪,各们大侠帮俺找找
BusNumInfo.java
package net.blogjava.mobile;import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;import net.blogjava.mobile.db.DBService;import android.app.Activity;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;public class BusNumInfo extends ListActivity
{
private TextView tvBusNumber,tvBusTime,tvTicketPrice,tvBusLine;
private ImageView ivBusNumItem;
private String queryValue;
private final String DATABASE_PATH = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath();
private final String DATABASE_FILENAME = "businfo.db";
private SQLiteDatabase database;
private BusDataAdapter busdataAdapter;
private String databaseFilename;
private SQLiteDatabase openDatabase()
{
try
{
databaseFilename = DATABASE_PATH+"/"+DATABASE_FILENAME;
if(!(new File(databaseFilename).exists()))
{
InputStream is = getResources().openRawResource(R.raw.businfo);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
while((count=is.read(buffer))>0)
{
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);
return database;
}
catch(Exception e)
{
}
return null;
}
public class BusDataAdapter extends CursorAdapter
{
private LayoutInflater layoutInflater;
public BusDataAdapter(Context context, Cursor c, boolean autoRequery)
{
super(context, c, autoRequery);
layoutInflater = (LayoutInflater)context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
private void setView(View view,Cursor cursor)
{
ivBusNumItem = (ImageView)findViewById(R.id.ivBusNumItem);
tvBusNumber = (TextView)findViewById(R.id.tvBusNumber);
tvBusTime = (TextView)findViewById(R.id.tvBusTime);
tvTicketPrice = (TextView)findViewById(R.id.tvTicketPrice);
tvBusLine = (TextView)findViewById(R.id.tvBusLine);
ivBusNumItem.setImageResource(R.drawable.van);
tvBusNumber.setText(cursor.getString(cursor.getColumnIndex("BUSNUM")));
tvBusTime.setText(cursor.getString(cursor.getColumnIndex("TIME")));
tvTicketPrice.setText(cursor.getString(cursor.getColumnIndex("PRICE")));
tvBusLine.setText(cursor.getString(cursor.getColumnIndex("FORWARDLINE")));
}
@Override
public void bindView(View view, Context context, Cursor cursor)
{
setView(view,cursor);
} @Override
public View newView(Context context, Cursor cursor, ViewGroup parent)
{
View view = layoutInflater.inflate(R.layout.busnumresult, null);
setView(view,cursor);
return view;
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
queryValue = bundle.getString("busnumber");
database = openDatabase();
String sql = "select ID,BUSNUM,TIME,PRICE,FORWARDLINE from businfo where BUSNUM like ?";
Cursor cursor = database.rawQuery(sql, new String[]{queryValue});
busdataAdapter = new BusDataAdapter(this,cursor,true);
setListAdapter(busdataAdapter);
}
} 找不到问题在哪,各们大侠帮俺找找
解决方案 »
- Android 自定义ViewGroup 为什么总是充满全屏
- 模拟器如何通过UDP访问开发机的指定端口?
- android新浪微博认证出错
- 知道安装环境的入、、、求解
- 编译policies后零输出?
- android 2.2原生浏览器出现白屏遮挡问题
- android的gamil客户端无法打开
- android中如何根据已知的多点画出弧度曲线
- android EditText的addTextChangedListener(new TextWatcher())相关问题
- No JNI_OnLoad found 求大神解答!!!!
- 关于android 数据库的问题
- Android通过Telnet发送二进制短信(PDU)
Cursor cursor = database.rawQuery(sql, new String[]{queryValue});
建议改一下。你用like其实又没有用到like的特性。至少要把数据改成 Cursor cursor = database.rawQuery(sql, new String[]{“%”+queryValue+“%”});