1

(これは私の lunch.class で、データベースからリストビューにデータを入力します。間違いがあれば教えてください。私はまだこれに慣れていません。)

 public class Lunch extends Activity implements OnItemClickListener {

DBOpener dbopener;

@Override
protected void onCreate(Bundle savedInstanceState) {

    //for fullscreen view
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dinner);

    dbopener = new DBOpener(this);
}

// Open the DB, query all subject codes and refresh the listview
// when app resumes
@Override
protected void onResume() {
    super.onResume();

    // Configure the listview
    ArrayList<String> mealNames = new ArrayList<String>();
    ListView lstDine = (ListView)this.findViewById(R.id.dine);
    lstDine.setAdapter(new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, mealNames));

    // Open/create the DB
    try {
        dbopener.createDatabase(); // Create DB if necessary
      dbopener.openDatabase(); // Open the DB

      Cursor dinners = dbopener.getLunchNames();
      while (dinners.moveToNext()) {
          mealNames.add(dinners.getString(0)); // Get the current subj
                                                  // code, add to list
      }
      dinners.close();

      // Update the listview
      ArrayAdapter<String> ad = (ArrayAdapter<String>)lstDine.getAdapter();
      ad.notifyDataSetChanged();

      lstDine.setOnItemClickListener(this);
    } catch (Exception e) {
        Toast.makeText(this, "Could not open DB", 
            Toast.LENGTH_LONG).show();
    }
}

// Close the DB when app pauses
@Override
protected void onPause() {
    super.onPause();

    dbopener.close();
}

// When user clicks on an item
public void onItemClick(AdapterView<?> parent, View v, int pos, long id) {
    // Use subject code from listview to retrieve other
      // details with the dbopener

    switch(pos)
    {
    case 0 :
    Intent newActivity = new Intent("com.edu.tp.iit.mns.Display");
    newActivity.putExtra("1", "2"); // this is where im unaware of the codes.how to pass the strings of value to the next page
    startActivity(newActivity);
    break;
    }
    switch(pos)
    {
    case 1 :
    Intent newActivity = new Intent("com.edu.tp.iit.mns.Display");
    startActivity(newActivity); 
    break;
    }
    switch(pos)
    {
    case 2 :
    Intent newActivity = new Intent("com.edu.tp.iit.mns.Display");
    startActivity(newActivity);
    break;
    }
    switch(pos)
    {
    case 3 :
    Intent newActivity = new Intent("com.edu.tp.iit.mns.Display");
    startActivity(newActivity);
    break;
    }
    switch(pos)
    {
    case 4 :
    Intent newActivity = new Intent("com.edu.tp.iit.mns.Display");
    startActivity(newActivity);
    break;
    }
    switch(pos)
    {
    case 5 :
    Intent newActivity = new Intent("com.edu.tp.iit.mns.Display");
    startActivity(newActivity);
    break;
    }
    switch(pos)
    {
    case 6 :
    Intent newActivity = new Intent("com.edu.tp.iit.mns.Display");
    startActivity(newActivity);
    break;
    }
    switch(pos)
    {
    case 7 :
    Intent newActivity = new Intent("com.edu.tp.iit.mns.Display");
    startActivity(newActivity);
    break;
    }

}

(これは display.class (画像 2) で、画像、食品名、食品の説明、評価などの動的情報を表示するためのテンプレートのように機能します。

  public class Display extends Activity {

DBOpener dbopener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display);   

    dbopener = new DBOpener(this);      
}

@Override
protected void onResume() {
    super.onResume();

    // Configure the listview
  //        ArrayList<String> mealNames = new ArrayList<String>();
  //        ListView lstDine = (ListView)this.findViewById(R.id.dine);
  //        lstDine.setAdapter(new ArrayAdapter<String>(this, 
  //            android.R.layout.simple_list_item_1, mealNames));

    // Open/create the DB
    try {
  //            dbopener.createDatabase(); // Create DB if necessary
      dbopener.openDatabase(); // Open the DB
      Toast.makeText(this, " open DB", 
                Toast.LENGTH_LONG).show();
      Cursor dinners = dbopener.getLunchNames();
      while (dinners.moveToNext()) {
  //              mealNames.add(dinners.getString(0)); // Get the current subj
                                                  // code, add to list
      }
      dinners.close();

      // Update the listview
 //       ArrayAdapter<String> ad = (ArrayAdapter<String>)lstDine.getAdapter();
  //          ad.notifyDataSetChanged();
   //               
  //          lstDine.setOnItemClickListener(this);
    } catch (Exception e) {
        Toast.makeText(this, "Could not open DB", 
            Toast.LENGTH_LONG).show();
    }
}

// Close the DB when app pauses
    @Override
    protected void onPause() {
        super.onPause();

        dbopener.close();
    }

 }

そして最後に私の dpopener ファイル:

  public class DBOpener extends SQLiteOpenHelper {

    private static String DB_PATH = 
   "/data/data/com.edu.tp.iit.mns/databases/"; //path of our database
    private static String DB_NAME ="finals"; // Database name
    private final Context myContext;
    private SQLiteDatabase db;



@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub

}

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

}

public DBOpener(Context context) {
    super(context, DB_NAME, null, 1);
    myContext = context;
}

public void createDatabase() throws IOException {
    boolean dbExists = checkDatabase();
    if (dbExists) {
        // Do nothing, DB already exists
        Log.d("DBOpener", "DB exists");
    } else {
        // By calling this method an empty database will be created
            // in the default system path of your application, which we
            // will overwrite with our own database.
        Log.d("DBOpener", "DB does not exit - copying from assets");
        this.getReadableDatabase();
        copyDatabase();
        }
}


private boolean checkDatabase() {
    SQLiteDatabase checkDB = null;
    try {
        // Try opening the database
        String path = DB_PATH + DB_NAME;
        checkDB = SQLiteDatabase.openDatabase(path, null, 
            SQLiteDatabase.OPEN_READONLY);
    } catch (SQLiteException e) {
        // If it fails, DB does not exist
    }
    if (checkDB != null)
        checkDB.close(); // Close the DB; we don’t need it now
    return checkDB != null;
}

private void copyDatabase() throws IOException {
    InputStream istream = myContext.getAssets().open(DB_NAME);
    OutputStream ostream = new FileOutputStream(DB_PATH + DB_NAME);
    // Transfer bytes from istream to ostream
    byte[] buffer = new byte[1024];
    int length;
    while ((length = istream.read(buffer)) > 0) {
        ostream.write(buffer, 0, length);
    }
    // Close streams
    istream.close();
    ostream.flush();
    ostream.close();
}

public void openDatabase() throws SQLiteException {
    db = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, 
        SQLiteDatabase.OPEN_READWRITE);
}

@Override
public synchronized void close() {
    if (db != null)
        db.close();
    super.close();
}

// Retrieve all subject codes
public Cursor getDinnerNames() {
    if (db == null)
        return null;
    return db.query("dinner", new String[] {"name"},
        null, null, null, null, null);
}


// Get details of specific subject
public Cursor getDinnerDetails(String name) {
    if (db == null)
        return null;
    return db.query("dinner", new String[] {"name", "nutrition", "rating"},
        "name = ?", new String[] {name}, null, null, null);
}

// Retrieve all subject codes
public Cursor getLunchNames() {
    if (db == null)
        return null;
    return db.query("lunch", new String[] {"name"},
        null, null, null, null, null);
}

// Get details of specific subject
    public Cursor getLunchDetails(String name) {
        if (db == null)
            return null;
        return db.query("dinner", new String[] {"name", "nutrition", "rating"},
            "name = ?", new String[] {name}, null, null, null);
    }

    // Retrieve all subject codes
    public Cursor getBreakfastNames() {
        if (db == null)
            return null;
        return db.query("breakfast", new String[] {"name"},
            null, null, null, null, null);
    }

    // Get details of specific subject
    public Cursor getBreakfastDetails(String name) {
        if (db == null)
            return null;
        return db.query("breakfast", new String[] {"name", "nutrition", "rating"},
            "name = ?", new String[] {name}, null, null, null);
    }
   }

コードを完成できるように、ケース 0 から始めるのを手伝ってくれませんか。たとえば、ユーザーは BBQ チキン サンドイッチをクリックします。display.class に移動し、db から情報を取得して、画像の評価と内容を表示します。

4

1 に答える 1

0

インテントを介して新しいアクティビティに引数を渡すには、コードを設定するのと同じように、putExtra()を使用します。newActivity.putExtra( "1"、 "2");

最初のパラメーターは、パラメーターを識別するための文字列定数である必要があります。この文字列を使用して、後で値を取得します。2番目のパラメーターは値です。androidにはすべてのプリミティブのメソッドがあります。

新しいアクティビティでは、getExtra( "1"、 "2")を使用します。ここで、1は以前に使用した定数で、2は、使用した値または定数が見つからない場合のデフォルト値です。

于 2012-05-31T17:41:57.627 に答える