SQLite数据库适配器

时间:2012-09-10 11:57:32

标签: android sqlite android-arrayadapter

我正在处理新闻Android应用程序如果我在线我在 rss 流量中得到消息我有一个RSSItemAdapter

使用此代码:

class RSSItemAdapter extends ArrayAdapter<RSSItem> {

    private final Context context;
    final Comment  comment = null;
    private CommentsDataSource datasource;

    public RSSItemAdapter(Context context, int textViewResourceId, List<RSSItem> items) {
        super(context, textViewResourceId, items);
        this.context = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.rssitem, null);
        }
        final RSSItem item = getItem(position);
        TextView tv = (TextView) v.findViewById(R.id.title);
        // tv.setText("<a href="+'"'+item.getUrl()+'"'+">"+item.getTitle()+"</a>");

        // tv.setText(Html.fromHtml("<a href=\"http://www.google.com\">"+item.getTitle()+"</a>"));
        tv.setText(item.getTitle());
        //tv.setMovementMethod(LinkMovementMethod.getInstance());

        TextView tv1 = (TextView) v.findViewById(R.id.description);
        tv1.setText(item.getDescription());

        TextView tv2 = (TextView) v.findViewById(R.id.pubdate);

        Date date = item.getPubDate();  
        Format formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");
        String s = formatter.format(date);

        tv2.setText(s);

        TextView tv3 = (TextView) v.findViewById(R.id.lien);
        tv3.setText(item.getUrl());

        ImageView iv = (ImageView) v.findViewById(R.id.img);
        try {
            iv.setImageDrawable(drawable_from_url(item.getImageUrl(), item.getImageTitle()));

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return v;
    }

    Drawable drawable_from_url(String url, String src_name) throws java.net.MalformedURLException, java.io.IOException 
    {
        return Drawable.createFromStream(((java.io.InputStream)
        new java.net.URL(url).getContent()), src_name);
    }

}

在主课程之后我称之为:

if(isOnline()) { 
    ListView rssItemList = (ListView) findViewById(R.id.rssListview);
    FeedSource feedSource = new HttpFeedSource();
    RSSItemAdapter adapter = new RSSItemAdapter(this, R.layout.rssitem, feedSource.getFeed());
    rssItemList.setAdapter(adapter);
} 

那么如何才能将日期存储在我的sqlite上并使用适配器打印出来?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

 package news.mobile;

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


public class SQLiteAdapter {

public static final String MYDATABASE_NAME = "mobilealgerie.db";
public static final String MYDATABASE_TABLE = "mobilealgerie";
public static final int MYDATABASE_VERSION = 1;
public static final String KEY_ID = "_id";
public static final String KEY_TITLE = "title";
  public static final String KEY_DESCRIPTION = "description";
  public static final String KEY_PUBDATE = "pubdate";

//create table MY_DATABASE (ID integer primary key, Content text not null);
private static final String SCRIPT_CREATE_DATABASE =
    "create table " + MYDATABASE_TABLE + " ("
    + KEY_ID + " integer primary key autoincrement, "
    + KEY_TITLE + " text not null ,"
    + KEY_DESCRIPTION + " text not null,"
    + KEY_PUBDATE + " text not null);";

private SQLiteHelper sqLiteHelper;
private SQLiteDatabase sqLiteDatabase;

private Context context;

public SQLiteAdapter(Context c){
    context = c;
}

public SQLiteAdapter openToRead() throws android.database.SQLException {
    sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
    sqLiteDatabase = sqLiteHelper.getReadableDatabase();
    return this;    
}

public SQLiteAdapter openToWrite() throws android.database.SQLException {
    sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
    sqLiteDatabase = sqLiteHelper.getWritableDatabase();
    return this;    
}

public void close(){
    sqLiteHelper.close();
}

public long insert(String TITLE,String DESCRIPTION ,String PUBDATE){

    ContentValues contentValues = new ContentValues();
    contentValues.put(KEY_TITLE, TITLE);
    contentValues.put(KEY_DESCRIPTION, DESCRIPTION);
    contentValues.put(KEY_PUBDATE, PUBDATE);
    return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues);
}

public int deleteAll(){
    return sqLiteDatabase.delete(MYDATABASE_TABLE, null, null);
}

public Cursor queueAll(){
    String[] columns = new String[]{KEY_ID, KEY_TITLE, KEY_DESCRIPTION,KEY_PUBDATE };
    Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, 
            null, null, null, null, null);

    return cursor;
}

public class SQLiteHelper extends SQLiteOpenHelper {

    public SQLiteHelper(Context context, String name,
            CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(SCRIPT_CREATE_DATABASE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

}

}