Записываю данные в БД из текстового файла, потом эти данные вывожу через SimpleCursorAdapter, сбивается кодировка, всё перепробовал, ничего не помогает, подскажите, в чём проблема? BD.class Код | import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Locale;
import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper;
public class DB {
private static final String DB_NAME = "mydb"; private static final int DB_VERSION = 1; private static final String DB_TABLE = "booklist";
public static final String COLUMN_ID = "_id"; public static final String COLUMN_TXT_HEAD = "nm_text_head"; public static final String COLUMN_TXT = "nm_text"; public static final String COLUMN_SCORE = "nn_score";
private static final String DB_CREATE = "create table " + DB_TABLE + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_TXT_HEAD + " text, " + COLUMN_TXT + " text, " + COLUMN_SCORE + " integer" + ");";
private final Context mContext;
private DBHelper mDBHelper; private SQLiteDatabase mDB;
public DB(Context ctx) { mContext = ctx; }
// открыть подключение public void open() { mDBHelper = new DBHelper(mContext, DB_NAME, null, DB_VERSION); mDB = mDBHelper.getWritableDatabase(); }
// закрыть подключение public void close() { if (mDBHelper != null) mDBHelper.close(); }
// получить все данные из таблицы DB_TABLE public Cursor getAllData() { return mDB.query(DB_TABLE, null, null, null, null, null, null); }
// класс по созданию и управлению БД private class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); }
private ArrayList<String> getData(String file_name) {
InputStream stream = null;
ArrayList<String> list = new ArrayList<String>();
try { stream = mContext.getAssets().open(file_name); } catch (IOException e) {
}
DataInputStream dataStream = new DataInputStream(stream); String data = ""; try { while ((data = dataStream.readLine()) != null) { list.add(data); } } catch (IOException e) { e.printStackTrace(); }
return list; }
// создаем и заполняем БД @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DB_CREATE);
ArrayList<String> list = getData("bookList.txt");
if (db != null) {
ContentValues values;
for (String data : list) { String[] row = data.split(";");
values = new ContentValues(); values.put(COLUMN_TXT_HEAD, row[1]); values.put(COLUMN_TXT, row[2]); values.put(COLUMN_SCORE, 0); db.insert(DB_TABLE, null, values); } } }
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } }
|
MainActivity.class Код | public class MainActivity extends Activity {
ListView lvData; DB db; SimpleCursorAdapter scAdapter; Cursor cursor;
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
// открываем подключение к БД db = new DB(this); db.open();
// получаем курсор cursor = db.getAllData(); startManagingCursor(cursor);
// формируем столбцы сопоставления String[] from = new String[] { DB.COLUMN_TXT_HEAD, DB.COLUMN_TXT, DB.COLUMN_SCORE }; int[] to = new int[] { R.id.tvTextHead, R.id.tvText, R.id.tvTextScore };
// создааем адаптер и настраиваем список scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from, to); lvData = (ListView) findViewById(R.id.lvData); lvData.setAdapter(scAdapter);
// добавляем контекстное меню к списку // registerForContextMenu(lvData); }
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); }
protected void onDestroy() { super.onDestroy(); // закрываем подключение при выходе db.close(); } }
|
|