我的主要活动是
public class MainActivity extends Activity {
private EditText title_name,head_name,content;
private Button saveButton;
private DatabaseHandler dba;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dba=new DatabaseHandler(MainActivity.this);
title_name=(EditText)findViewById(R.id.editText_Title);
head_name=(EditText)findViewById(R.id.ediText_Name);
content=(EditText)findViewById(R.id.editText_Content);
saveButton=(Button)findViewById(R.id.button_Save);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveTodb();
}
});
}
private void saveTodb() {
Mywish wish=new Mywish();
wish.setTitle(title_name.getText().toString().trim());
wish.setHeadingName(head_name.getText().toString().trim());
wish.setContent(content.getText().toString().trim());
dba.addWishes(wish);
dba.close();
title_name.setText("");
head_name.setText("");
content.setText("");
Intent i =new Intent(MainActivity.this,DisplayItem.class);
startActivity(i);
}
} 和我的Consatnts.java,在这里我声明了我的数据库变量和细节`
public class Constants {
public static final String DATABASE_NAME="diary";
public static final int DATABASE_VERSION=1;
public static final String TABLE_NAME="details";
public static final String TITLE_NAME="title";
public static final String HEAD_NAME="headingname";
public static final String CONTENT_NAME ="content";
public static final String DATE_NAME="date";
public static final String KEY_ID="_id";
}
我的DatabaseHandler类是
public class DatabaseHandler extends SQLiteOpenHelper{
private final ArrayList wishList = new ArrayList<>();
public DatabaseHandler(Context context ) {
super(context,Constants.DATABASE_NAME,null,Constants.DATABASE_VERSION );
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_DIARY_TABLE="CREATE TABLE "+Constants.TABLE_NAME + "("+Constants.KEY_ID +" INTEGER PRIMARY KEY,"+
Constants.TITLE_NAME + " TEXT,"+Constants.HEAD_NAME +" TEXT,"+ Constants.CONTENT_NAME+" TEXT,"+Constants.DATE_NAME +" INTEGER)";
db.execSQL(CREATE_DIARY_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+Constants.TABLE_NAME);
onCreate(db);
}
public void addWishes(Mywish wish)
{
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(Constants.TITLE_NAME,wish.getTitle());
values.put(Constants.HEAD_NAME,wish.getHeadingName());
values.put(Constants.CONTENT_NAME,wish.getContent());
values.put(Constants.DATE_NAME,java.lang.System.currentTimeMillis());
db.insert(Constants.TABLE_NAME, null, values);
Log.v("WISH SUCCESfuHOOO"," Hoo");
db.close();
}
public ArrayList<Mywish> getWishes()
{
String selectQuery="SELECT * FROM"+Constants.TABLE_NAME;
SQLiteDatabase db=this.getReadableDatabase();
Cursor cursor=db.query(Constants.TABLE_NAME,new String[]{Constants.KEY_ID,Constants.TITLE_NAME,Constants.HEAD_NAME,Constants.CONTENT_NAME,
Constants.DATE_NAME },null,null,null,null,null,Constants.DATE_NAME+"DESC" );
if (cursor.moveToFirst())
{
do {
Mywish wish=new Mywish();
wish.setTitle(cursor.getString(cursor.getColumnIndex(Constants.TITLE_NAME)));
wish.setHeadingName(cursor.getString(cursor.getColumnIndex(Constants.HEAD_NAME)));
wish.setContent(cursor.getString(cursor.getColumnIndex(Constants.CONTENT_NAME)));
java.text.DateFormat dateFormat=java.text.DateFormat.getDateInstance();
String datedata=dateFormat.format(new Date(cursor.getLong(cursor.getColumnIndex(Constants.DATE_NAME))).getTime());
wish.setDateRecorded(datedata);
wishList.add(wish);
}while (cursor.moveToNext());
}
return wishList;
}
}
Mywish类用于声明我的应用程序中使用的数据变量
public class Mywish {
public String Title;
public String DateRecorded;
public String Content;
public String HeadingName;
public String getContent() {
return Content;
}
public void setContent(String content) {
this.Content = content;
}
public String getDateRecorded() {
return DateRecorded;
}
public void setDateRecorded(String dateRecorded) {
this.DateRecorded = dateRecorded;
}
public String getHeadingName() {
return HeadingName;
}
public void setHeadingName(String headingName) {
this.HeadingName = headingName;
}
public String getTitle() {
return Title;
}
public void setTitle(String title) {
this.Title = title;
}
}
Displayitem Class用于在List视图中显示详细信息。我设置了适配器,除了值之外的所有内容都没有进入List视图。
public class DisplayItem extends Activity {
private DatabaseHandler dba;
private ArrayList<Mywish> dbwishes=new ArrayList<>();
private WishAdapter wishAdapter;
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_item);
Log.v("Dispaly act","DiSPLAYAVTIVIT");
listview=(ListView)findViewById(R.id.List);
referesData();
}
private void referesData() {
dbwishes.clear();
dba=new DatabaseHandler(getApplicationContext());
ArrayList<Mywish> wishesfrmDb=dba.getWishes();
for (int i=0;i<wishesfrmDb.size();i++)
{
String title=wishesfrmDb.get(i).getTitle() ;
String headname=wishesfrmDb.get(i).getHeadingName();
String content=wishesfrmDb.get(i).getContent();
String date=wishesfrmDb.get(i).getDateRecorded();
Mywish myWish=new Mywish();
myWish.setTitle(title);
myWish.setContent(content);
myWish.setHeadingName(headname);
myWish.setDateRecorded(date);
dbwishes.add(myWish);
}
dba.close();
wishAdapter =new WishAdapter(DisplayItem.this,R.layout.wish_row,dbwishes);
listview.setAdapter(wishAdapter);
}
public class WishAdapter extends ArrayAdapter<Mywish>
{
Activity activity;
int layoutResource;
Mywish wish;
ArrayList<Mywish> mData=new ArrayList<>();
public WishAdapter(Activity act, int resource, ArrayList<Mywish> data) {
super(act, resource, data);
activity=act;
layoutResource=resource;
mData=data;
notifyDataSetChanged();
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Mywish getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
@Override
public int getPosition(Mywish item) {
return super.getPosition(item);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row= convertView;
ViewHolder holder=null;
if (row==null ||(row.getTag()==null))
{
LayoutInflater inflater=LayoutInflater.from(activity);
row=inflater.inflate(layoutResource,null);
holder=new ViewHolder();
holder.mTitle=(TextView)row.findViewById(R.id.textView_listTitle);
holder.mHead=(TextView)row.findViewById(R.id.textView_listName);
holder.mDate=(TextView)row.findViewById(R.id.textView_listDate);
row.setTag(holder);
} else {
holder=(ViewHolder) row.getTag();
}
holder.myWish=getItem(position);
holder.mTitle.setText(holder.myWish.getTitle());
holder.mHead.setText(holder.myWish.getHeadingName());
holder.mDate.setText(holder.myWish.getDateRecorded());
return row;
}
class ViewHolder{
TextView mTitle;
TextView mHead;
TextView mDate;
TextView mId;
TextView mContent;
Mywish myWish;
}
}
}
我的日志是 进程:harico.databaseex,PID:6329 java.lang.RuntimeException:无法启动活动ComponentInfo {harico.databaseex / harico.databaseex.DisplayItem}:java.lang.IllegalArgumentException:无效的LIMIT子句:date DESC
答案 0 :(得分:0)
和Waqar Ahmed一样:
“Constants.DATE_NAME +”DESC“,你没有在”DESC“之前放置空间
光标的参数没有很好的排序,应该是这样的:
static {
System.setProperty("org.apache.commons.logging.Log",
"org.apache.commons.logging.impl.NoOpLog");
}