2012-02-27 2 views
1

это MyCLASS eyehelper, который preloades базу данных из текстового файлаандроид не отображает базы данных

public class EyeHelper extends SQLiteOpenHelper { 
     private static final String TAG = "EyeDatabase"; 
     //private static final String DB_DIR = "/data/data/test.eyedb/databases/"; 
     private static final String DB_NAME="eyeDB.sqlite"; 
     //private static String DB_PATH = DB_DIR + DB_NAME; 
     private static final int SCHEMA_VERSION=1; 
     private final Context myContext = null; 
     private SQLiteDatabase mDatabase; 

    public EyeHelper(Context context) { 
    super(context, DB_NAME, null, SCHEMA_VERSION); 
    } 



    @Override 
    public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE DiseaseTable (_id INTEGER PRIMARY KEY AUTOINCREMENT, Disease TEXT NOT NULL, Definition TEXT NOT NULL, Remedy TEXT NOT NULL);"); 
    db.execSQL("INSERT INTO DiseaseTable VALUES(1,'Nilsen', 'Johan', 'Bakken 2');"); 
    loadDB(); 
    } 
    private void loadDB() { 
     new Thread(new Runnable() { 
      public void run() { 
       try { 
        loadWords(); 
       } catch (IOException e) { 
        throw new RuntimeException(e); 
       } 
      } 
     }).start(); 
    } 

    private void loadWords() throws IOException { 
     Log.d(TAG, "Loading words..."); 
     final Resources resources = myContext.getResources(); 
     InputStream inputStream = resources.openRawResource(R.raw.dbtest); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 

     try { 
      String line; 
      while ((line = reader.readLine()) != null) { 
       String[] strings = TextUtils.split(line, "-"); 
       if (strings.length < 3) continue; 
       long id = addWord(strings[0].trim(), strings[1].trim(), strings[2].trim()); 
       if (id < 0) { 
        Log.e(TAG, "unable to add word: " + strings[0].trim()); 
       } 
      } 
     } finally { 
      reader.close(); 
     } 
     Log.d(TAG, "DONE loading words."); 
    } 

    /** 
    * Add a word to the dictionary. 
    * @return rowId or -1 if failed 
    */ 
    public long addWord(String disease, String definition, String remedy) { 
     ContentValues cv = new ContentValues(); 
     cv.put("disease", disease); 
     cv.put("definition", definition); 
     cv.put("remedy", remedy); 
     return mDatabase.insert("DiseaseTable", null, cv); 
    } 


    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS DiseaseTable"); 
     onCreate(db); 
    } 

    public Cursor getAll() { 
    return(getReadableDatabase() 
      .rawQuery("SELECT * FROM DiseaseTable", 
         null)); 
    } 

    public void insert(String disease, String definition, 
        String remedy) { 
    ContentValues cv=new ContentValues(); 

    cv.put("disease", disease); 
    cv.put("definition", definition); 
    cv.put("remedy", remedy); 


    getWritableDatabase().insert("Disease", "disease", cv); 
    } 

    public String getDisease(Cursor c) { 
    return(c.getString(1)); 
    } 

    public String getDefinition(Cursor c) { 
    return(c.getString(2)); 
    } 

    public String getRemedy(Cursor c) { 
    return(c.getString(3)); 
    } 
} 

и это моя основная деятельность

public class EyeDBActivity extends TabActivity { 
    Cursor model=null; 
    EyeAdapter adapter=null; 
    TextView disease; 
    TextView definition; 
    TextView remedy; 
    EyeHelper helper=null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    helper=new EyeHelper(this); 

    disease=(TextView)findViewById(R.id.disease); 
    definition=(TextView)findViewById(R.id.definition); 
    remedy=(TextView)findViewById(R.id.remedy); 

    //sButton save=(Button)findViewById(R.id.save); 

    //save.setOnClickListener(onSave); 

    ListView list=(ListView)findViewById(R.id.list); 

    model=helper.getAll(); 
    startManagingCursor(model); 
    adapter=new EyeAdapter(model); 
    list.setAdapter(adapter); 

    TabHost.TabSpec spec=getTabHost().newTabSpec("tag1"); 

    spec.setContent(R.id.list); 
    spec.setIndicator("Search", getResources() 
           .getDrawable(R.drawable.list)); 
    getTabHost().addTab(spec); 

    spec=getTabHost().newTabSpec("tag2"); 
    spec.setContent(R.id.details); 
    spec.setIndicator("Information", getResources() 
            .getDrawable(R.drawable.restaurant)); 
    getTabHost().addTab(spec); 

    getTabHost().setCurrentTab(0); 

    list.setOnItemClickListener(onListClick); 
    } 

    @Override 
    public void onDestroy() { 
    super.onDestroy(); 

    helper.close(); 
    } 

    /*private View.OnClickListener onSave=new View.OnClickListener() { 
    public void onClick(View v) { 
     String type=null; 

     switch (types.getCheckedRadioButtonId()) { 
     case R.id.sit_down: 
      type="sit_down"; 
      break; 
     case R.id.take_out: 
      type="take_out"; 
      break; 
     case R.id.delivery: 
      type="delivery"; 
      break; 
     } 

     helper.insert(name.getText().toString(), 
        address.getText().toString(), type, 
        notes.getText().toString()); 
     model.requery(); 
    } 
    };*/ 

    private AdapterView.OnItemClickListener onListClick=new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, 
           View view, int position, 
           long id) { 
     model.moveToPosition(position); 
     disease.setText(helper.getDisease(model)); 
     definition.setText(helper.getDefinition(model)); 
     remedy.setText(helper.getRemedy(model)); 
     getTabHost().setCurrentTab(1); 
    } 
    }; 

    class EyeAdapter extends CursorAdapter { 
    EyeAdapter(Cursor c) { 
     super(EyeDBActivity.this, c); 
    } 

    @Override 
    public void bindView(View row, Context ctxt, 
         Cursor c) { 
     EyeHolder holder=(EyeHolder)row.getTag(); 

     holder.populateFrom(c, helper); 
    } 

    @Override 
    public View newView(Context ctxt, Cursor c, 
         ViewGroup parent) { 
     LayoutInflater inflater=getLayoutInflater(); 
     View row=inflater.inflate(R.layout.row, parent, false); 
     EyeHolder holder=new EyeHolder(row); 

     row.setTag(holder); 

     return(row); 
    } 
    } 

    static class EyeHolder { 
    private TextView disease; 

    EyeHolder(View row) { 
     disease=(TextView)row.findViewById(R.id.text); 
    } 

    void populateFrom(Cursor c, EyeHelper helper) { 
     disease.setText(helper.getDisease(c)); 
    } 
    } 
} 

я не знаю, почему моя программа Дон» t отображать мою базу данных на create, , хотя я вставил адаптер в список.

ответ

0

Ваш выбор немного отличается от того, что мне было бы так сложно, если бы я сказал, что не так. Похоже, что вы неправильно вызываете свой setText. Вам не нужно указывать свой метод settext в вашем держателе. В вашей привязке должно быть хорошо. Я не думаю, что вам нужно будет называть его курсором, поскольку он должен автоматически делать это на основе того, какой курсор был установлен в вашем адаптере. Если вы еще не видели эту ссылку, это должно помочь. http://www.vogella.de/articles/AndroidListView/article.html#adapterperformance_standard

Это очень помогло мне в создании пользовательских адаптеров.

Смежные вопросы