Вы можете использовать операторы для оптимизированной вставки больших массивов данных, например: -
private static final String INSERT = "insert into "
+ TABLE_NAME+ " (" + COLUMN_1 + ", "
+ COLUMN_2 + ", "+COLUMN_3+") values (?, ?, ?)";
public void insertReditPosts(ArrayList<RedditPost> redditPosts) {
SQLiteDatabase database = this.getWritableDatabase();
int aSize = redditPosts.size();
database.beginTransaction();
try {
SQLiteStatement insert = database.compileStatement(INSERT);
for (int i = 0; i < aSize; i++) {
insert.bindString(1, redditPosts.get(i).id);
insert.bindString(2, redditPosts.get(i).title);
insert.bindString(3, redditPosts.get(i).url);
insert.executeInsert();
}
database.setTransactionSuccessful();
} catch (SQLException e) {
e.printStackTrace();
} finally {
database.endTransaction();
}
}
Из вашей деятельности просто вызовите этот метод и передайте ArrayList, который сохранит его в базе данных. Добавьте этот код, чтобы сохранить нажатый элемент при длительном нажатии в виде списка
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int pos, long id) {
Log.v("long clicked","pos: " + pos);
RedditPost redditPost = postsArrayList.get(pos);
if(redditPost!=null) {
addPostData(redditPost);
}
return true;
}
});