我想检索我的数据库中状态为open的所有数据,以便在我的Android应用程序中使用LIKE命令和SQLite数据库。
但是当我运行应用程序时,我在searchList . setAdapter (new_Lead_List_Adapter)
行获得了NullPointerException。
这是我的数据库适配器类
public class DataBase_Adapter
{
//Database NAme
static final String DATABASE_NAME = "lead_management.db";
//Database Version
static final int DATABASE_VERSION = 4;
// Variable to hold the database instance
public SQLiteDatabase db;
// Context of the application using the database.
private final Context context;
// Database open/upgrade helper
private DataBaseHelper dbHelper;
public DataBase_Adapter(Context _context)
{
context = _context;
dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DataBase_Adapter open() throws SQLException
{
db = dbHelper.getWritableDatabase();
return this;
}
public void close()
{
db.close();
}
public SQLiteDatabase getDatabaseInstance()
{
return db;
}
//Table name
public static String TABLE_NEW_LEAD="new_lead";
//Creating New Lead Table Columns
public static final String KEY_NEW_LEAD_ID ="id";
public static final String KEY_NEW_LEAD_NAME ="name";
public static final String KEY_NEW_LEAD_EMAIL ="email";
public static final String KEY_NEW_LEAD_MOBILE="mobile";
public static final String KEY_NEW_LEAD_Product="define_products";
public static final String KEY_NEW_LEAD_BUDGET="budget";
public static final String KEY_NEW_LEAD_PRIORITY="priority";
public static final String KEY_NEW_LEAD_STATUS="status";
public static final String KEY_NEW_LEAD_NOTES="notes";
public static final String KEY_NEW_LEAD_REMINDER_DATE="reminder_date";
public static final String KEY_NEW_LEAD_REMINDER_TIME="reminder_time";
public static final String KEY_NEW_LEAD_ADDtoCONTACTS="add_to_contacts";
//// SQL Statement to create a New Lead Database.
static final String CREATE_NEW_LEAD_TABLE = "CREATE TABLE "+ TABLE_NEW_LEAD + "("
+ KEY_NEW_LEAD_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ KEY_NEW_LEAD_NAME + " TEXT,"
+ KEY_NEW_LEAD_EMAIL + " TEXT,"
+ KEY_NEW_LEAD_MOBILE+ " TEXT,"
+ KEY_NEW_LEAD_Product + " TEXT,"
+ KEY_NEW_LEAD_BUDGET + " TEXT,"
+ KEY_NEW_LEAD_PRIORITY +" TEXT,"
+ KEY_NEW_LEAD_STATUS + " TEXT,"
+ KEY_NEW_LEAD_NOTES + " TEXT,"
+ KEY_NEW_LEAD_REMINDER_DATE + " TEXT,"
+ KEY_NEW_LEAD_REMINDER_TIME + " TEXT,"
+ KEY_NEW_LEAD_ADDtoCONTACTS + " TEXT"+");";
//");";
//Insert New Record In New Lead Table
public void insert_NewLead_Entry(New_Lead_BeanClass newLead_BeanClass)
{
SQLiteDatabase sdb = dbHelper.getWritableDatabase();
ContentValues contentNewLead_Val=new ContentValues();
contentNewLead_Val.put(KEY_NEW_LEAD_NAME, newLead_BeanClass.get_Name());
contentNewLead_Val.put(KEY_NEW_LEAD_EMAIL, newLead_BeanClass.get_Email());
contentNewLead_Val.put(KEY_NEW_LEAD_MOBILE, newLead_BeanClass.get_MobileNo());
contentNewLead_Val.put(KEY_NEW_LEAD_Product, newLead_BeanClass.get_Product());
contentNewLead_Val.put(KEY_NEW_LEAD_BUDGET, newLead_BeanClass.get_Budget());
contentNewLead_Val.put(KEY_NEW_LEAD_PRIORITY, newLead_BeanClass.get_Priority());
contentNewLead_Val.put(KEY_NEW_LEAD_STATUS, newLead_BeanClass.get_Status());
contentNewLead_Val.put(KEY_NEW_LEAD_NOTES, newLead_BeanClass.get_Notes());
contentNewLead_Val.put(KEY_NEW_LEAD_REMINDER_DATE, newLead_BeanClass.get_Reminder_Date());
contentNewLead_Val.put(KEY_NEW_LEAD_REMINDER_TIME, newLead_BeanClass.get_Reminder_Time());
contentNewLead_Val.put(KEY_NEW_LEAD_ADDtoCONTACTS, newLead_BeanClass.get_AddtoContact());
sdb.insert(TABLE_NEW_LEAD , null , contentNewLead_Val );
//Close The Database Connection
sdb.close();
}
public ArrayList<HashMap<String,String>> getAllUserData()
{
ArrayList<HashMap<String,String>> newLeadDat_Listl;
newLeadDat_Listl = new ArrayList<HashMap<String,String>>();
SQLiteDatabase sdatabase = dbHelper.getWritableDatabase();
String selectQuery= "SELECT * FROM" + TABLE_NEW_LEAD ;
Cursor cursor = sdatabase.rawQuery(selectQuery, null);
if (cursor.moveToFirst())
{
do
{
HashMap<String, String> map = new HashMap<String, String>();
map.put(KEY_NEW_LEAD_ID, cursor.getString(0));
map.put(KEY_NEW_LEAD_NAME, cursor.getString(1));
map.put(KEY_NEW_LEAD_EMAIL, cursor.getString(2));
map.put(KEY_NEW_LEAD_MOBILE, cursor.getString(3));
map.put(KEY_NEW_LEAD_Product, cursor.getString(4));
map.put(KEY_NEW_LEAD_BUDGET, cursor.getString(5));
map.put(KEY_NEW_LEAD_PRIORITY, cursor.getString(6));
map.put(KEY_NEW_LEAD_STATUS, cursor.getString(7));
map.put(KEY_NEW_LEAD_NOTES, cursor.getString(8));
map.put(KEY_NEW_LEAD_REMINDER_DATE, cursor.getString(9));
map.put(KEY_NEW_LEAD_REMINDER_TIME, cursor.getString(10));
map.put(KEY_NEW_LEAD_ADDtoCONTACTS, cursor.getString(11));
newLeadDat_Listl.add(map);
}
while (cursor.moveToNext());
}
return newLeadDat_Listl;
}
}
这是我的活动代码
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.search_data);
searchSpinner=(Spinner)findViewById(R.id.searchSpinner);
searchBtn=(ImageButton)findViewById(R.id.searchButton);
searchSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View v,
int position, long id) {
// TODO Auto-generated method stub
selectedSearchItem=parent.getItemAtPosition(position).toString().trim();
System.out.println("selectedProductItem =" + selectedSearchItem);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
searchBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0)
{
displayNewLeadData();
}
});
}
public void displayNewLeadData()
{
dbAdapter=new DataBase_Adapter(Serach_Data.this).open();
dataBase = dbAdapter.getDatabaseInstance();
//Cursor mCursor = dataBase.rawQuery("SELECT name FROM " + DataBase_Adapter.TABLE_NEW_LEAD, null);
cursor = dataBase.rawQuery("SELECT id, name, priority, status FROM new_lead WHERE status LIKE ?",
new String[]{ selectedSearchItem + "%"});
cursor.moveToFirst();
arrayList_newLead_Id.clear();
arrayList_newLead_Name.clear();
arrayList_newLead_Priority.clear();
arrayList_newLead_Status.clear();
{
do
{
arrayList_newLead_Id.add(cursor.getString(cursor.getColumnIndex(DataBase_Adapter.KEY_NEW_LEAD_ID)));
arrayList_newLead_Name.add(cursor.getString(cursor.getColumnIndex(DataBase_Adapter.KEY_NEW_LEAD_NAME)));
arrayList_newLead_Priority.add(cursor.getString(cursor.getColumnIndex(DataBase_Adapter.KEY_NEW_LEAD_PRIORITY)));
arrayList_newLead_Status.add(cursor.getString(cursor.getColumnIndex(DataBase_Adapter.KEY_NEW_LEAD_STATUS)));
} while (cursor.moveToNext());
}
new_Lead_List_Adapter = new New_Lead_List_Adapter(Serach_Data.this ,
arrayList_newLead_Id,
arrayList_newLead_Name ,
arrayList_newLead_Priority,
arrayList_newLead_Status);
searchList.setAdapter(new_Lead_List_Adapter);
new_Lead_List_Adapter.notifyDataSetChanged();
cursor.close();
System.out.printf("Data will Be Display." , new_Lead_List_Adapter);
}
}
这是我的适配器类
public class New_Lead_List_Adapter extends BaseAdapter
{
Context mContext;
protected New_Lead_List_Adapter(Context mContext,
ArrayList<String> newLead_ArrayList_ID,
ArrayList<String> newLead_ArrayList_Name,
ArrayList<String> newLead_ArrayList_Pririty,
ArrayList<String> newLead_ArrayList_Status)
{
this.mContext = mContext;
this.newLead_ArrayList_ID = newLead_ArrayList_ID;
this.newLead_ArrayList_Name = newLead_ArrayList_Name;
this.newLead_ArrayList_Pririty = newLead_ArrayList_Pririty;
this.newLead_ArrayList_Status = newLead_ArrayList_Status;
}
ArrayList<String> newLead_ArrayList_ID;
ArrayList<String> newLead_ArrayList_Name;
ArrayList<String> newLead_ArrayList_Pririty;
ArrayList<String> newLead_ArrayList_Status;
protected New_Lead_List_Adapter() {
super();
// TODO Auto-generated constructor stub
}
//@Override
public int getCount() {
// TODO Auto-generated method stub
return newLead_ArrayList_Name.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View child, ViewGroup parent) {
// TODO Auto-generated method stub
Holder mHolder;
LayoutInflater layoutInflater;
if(child == null)
{
layoutInflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
child = layoutInflater .inflate(R.layout.search_data_item_listview, null);
mHolder = new Holder();
mHolder.txt_newLead_ID=(TextView)child.findViewById(R.id.txtId);
mHolder.txt_newLead_Name=(TextView)child.findViewById(R.id.textView2_Name);
mHolder.txt_newLead_Priority=(TextView)child.findViewById(R.id.textView7Priority);
mHolder.txt_newLead_Status=(TextView)child.findViewById(R.id.textView8_Status);
child.setTag(mHolder);
}
else
{
mHolder = (Holder) child.getTag();
}
mHolder.txt_newLead_ID.setText(newLead_ArrayList_ID.get(position));
mHolder.txt_newLead_Name.setText(newLead_ArrayList_Name.get(position));
mHolder.txt_newLead_Priority.setText(newLead_ArrayList_Pririty.get(position));
mHolder.txt_newLead_Status.setText(newLead_ArrayList_Status.get(position));
return child;
}
public class Holder
{
TextView txt_newLead_ID;
TextView txt_newLead_Name;
TextView txt_newLead_Priority;
TextView txt_newLead_Status;
}
}
Log Cat Stack Trace信息。
12-14 11:22:30.184: E/AndroidRuntime(7872): FATAL EXCEPTION: main
12-14 11:22:30.184: E/AndroidRuntime(7872): java.lang.NullPointerException
12-14 11:22:30.184: E/AndroidRuntime(7872): at com.lead_management_project.Serach_Data.displayNewLeadData(Serach_Data.java:142)
12-14 11:22:30.184: E/AndroidRuntime(7872): at com.lead_management_project.Serach_Data$2.onClick(Serach_Data.java:84)
12-14 11:22:30.184: E/AndroidRuntime(7872): at android.view.View.performClick(View.java:2485)
12-14 11:22:30.184: E/AndroidRuntime(7872): at android.view.View$PerformClick.run(View.java:9080)
12-14 11:22:30.184: E/AndroidRuntime(7872): at android.os.Handler.handleCallback(Handler.java:587)
12-14 11:22:30.184: E/AndroidRuntime(7872): at android.os.Handler.dispatchMessage(Handler.java:92)
12-14 11:22:30.184: E/AndroidRuntime(7872): at android.os.Looper.loop(Looper.java:123)
12-14 11:22:30.184: E/AndroidRuntime(7872): at android.app.ActivityThread.main(ActivityThread.java:3683)
12-14 11:22:30.184: E/AndroidRuntime(7872): at java.lang.reflect.Method.invokeNative(Native Method)
12-14 11:22:30.184: E/AndroidRuntime(7872): at java.lang.reflect.Method.invoke(Method.java:507)
12-14 11:22:30.184: E/AndroidRuntime(7872): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-14 11:22:30.184: E/AndroidRuntime(7872): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-14 11:22:30.184: E/AndroidRuntime(7872): at dalvik.system.NativeStart.main(Native Method)