在Android的foreach循环打破数据 [英] foreach loop in android for breaking data
问题描述
这是我的SQLBlog类getDataFunc就是我得到的结果数据库功能
this is my SQLBlog class and getDataFunc is the function where i am getting result from database
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class SQLBlog {
public static final String KEY_ROWID = "_id";
public static final String KEY_NAME = "persons_name";
public static final String KEY_BLOG = "persons_blog";
private static final String DATABASE_NAME = "blog";
private static final String DATABASE_TABLE = "admin_blog";
private static final int DATABASE_VERSION = 1;
private DBhelper ourhelper;
private final Context ourcontext;
private SQLiteDatabase ourdatabase;
private static class DBhelper extends SQLiteOpenHelper{
public DBhelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("Create table "+ DATABASE_TABLE +" (" + KEY_ROWID + " Integer primary key autoincrement, "+
KEY_NAME +" text not null, "+
KEY_BLOG +" text not null);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("drop table if exists "+ DATABASE_TABLE);
onCreate(db);
}
}
public SQLBlog(Context c){
ourcontext=c;
}
public SQLBlog open() throws SQLException{
ourhelper= new DBhelper(ourcontext);
ourdatabase= ourhelper.getWritableDatabase();
return this;
}
public void close(){
ourhelper.close();
}
public long createEntry(String name, String blog) {
// TODO Auto-generated method stub
ContentValues cv = new ContentValues();
cv.put(KEY_NAME, name);
cv.put(KEY_BLOG, blog);
return ourdatabase.insert(DATABASE_TABLE, null, cv);
}
public String getDataFunc() {
// TODO Auto-generated method stub
String columns[]= new String[]{KEY_ROWID, KEY_NAME, KEY_BLOG};
Cursor c = ourdatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
String result= "";
int iRow = c.getColumnIndex(KEY_ROWID);
int iName = c.getColumnIndex(KEY_NAME);
int iBlog = c.getColumnIndex(KEY_BLOG);
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
result = result + c.getString(iRow) + " " + c.getString(iName) + " " + c.getString(iBlog) + "\n";
}
return result;
}
}
下面我使用的结果表明博客,我的用户
Here i am using that result to show blogs to my user
public class SQLLiteView extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.sqlview);
TextView tv =(TextView)findViewById(R.id.tvSQLinfo);
SQLBlog getdata = new SQLBlog(this);
getdata.open();
String data = getdata.getDataFunc();
getdata.close();
tv.setText(data);
}
}
但问题是我得到的数据作为一个字符串,但我想更多的动态显示数据,如...
But the problem is i am getting data as a string but i want to show the data more dynamically like...
嗨你好:发布者杰克
//注释这里将给出...
//comments will be given here...
如何从我的数据库中获取数据,并把它放在一个ListView是可点击:发布者妮可
How to get data from my database and put it on a ListView that is clickable :Posted By Nicole
//注释放在这里
我如何能实现this..need帮助...我想我正在寻找某种类型的foreach循环PHP之类的......它可以打破data..but因为我使用String作为返回类型我不能得到它..
How can i achieve this..need help...i think i am searching for some type foreach loop like php...which can break the data..but as i am using String as return type i cant get it..
推荐答案
您已经有一个的foreach
循环:
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
result = result + c.getString(iRow) + " " + c.getString(iName) + " " + c.getString(iBlog) + "\n";
}
在这里,您concate你串起来,只是把这个的foreach
循环在你的活动(返回光标
,而不是的字符串
),或让与有三个字段一个新的类列表和存储您的领域。
Here you concate your string together, just put this foreach
loop in your activity (return the cursor
, instead of String
) or make a list with a new class which has three fields and store your fields.
下面的一类包装您的结果的一个例子 - 这通常是一个不错的主意。但我真的建议阅读有关Java和面向对象编程的一些东西。
Here an example of wrapping your results in a class - which generally is a good idea anyway. But I really recommend to read some stuff about java and objectoriented programming.
如果您不想reutrn光标到活动中,你可以向这样的事情。
首先createa新的类,它保持博客的对象:
If you don't want to reutrn the cursor to the activity you could to something like this. First createa new class which keeps blog-objects:
public class Blog {
private String author;
private String content;
public Blog(String author, String content){
this.author = author;
this.content = content;
}
public String getAuthor(){
return author;
}
public String getContent(){
return content;
}
}
,然后改变你的DB-方法是这样的:
And then change your db-method like this:
public List<Blog> getDataFunc() {
// TODO Auto-generated method stub
String columns[]= new String[]{KEY_ROWID, KEY_NAME, KEY_BLOG};
Cursor c = ourdatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
List<Blog> results = new ArrayList<Blog>();
int iRow = c.getColumnIndex(KEY_ROWID);
int iName = c.getColumnIndex(KEY_NAME);
int iBlog = c.getColumnIndex(KEY_BLOG);
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
results.add(new Blog(c.getString(iName),c.getString(iBlog)));
}
return results;
}
现在在你的活动,您可以遍历是这样的:
Now in your activity you can iterate like this:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.sqlview);
TextView tv =(TextView)findViewById(R.id.tvSQLinfo);
SQLBlog getdata = new SQLBlog(this);
getdata.open();
for(Blog blog : getdata.getDataFunc()){
Log.v("tag",blog.getAuthor());
Log.v("tag",blog.getContent());
}
getdata.close();
tv.setText(data);
}
这篇关于在Android的foreach循环打破数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!