2016-01-18 64 views
0

我做了一個應用程序,到目前爲止我將捕獲的圖像存儲在數據庫中。然後我將它們分類並在不同的GridView中爲每個類別顯示它們。從每個gridView中選擇一個圖像後,我設法在不同的ImageView中顯示它們。現在我試圖將這些選擇的圖像保存在數據庫中,然後在ListView中顯示它們。問題是在列表中什麼也沒有。我想我的錯誤在於我正在使用圖像來保存它們的代碼部分。ANDROID - 將圖像從ImageView保存到數據庫

任何幫助?

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

    handler2 = new DatabaseHandler(getApplicationContext()); 

    Intent i = getIntent(); 

    ImageView im1 = (ImageView) findViewById(R.id.im1); 
    im1.setImageBitmap(BitmapFactory.decodeFile(i.getStringExtra("image1"))); 

    ImageView im2 = (ImageView) findViewById(R.id.im2); 
    im2.setImageBitmap(BitmapFactory.decodeFile(i.getStringExtra("image2"))); 

    ImageView im3 = (ImageView) findViewById(R.id.im3); 
    im3.setImageBitmap(BitmapFactory.decodeFile(i.getStringExtra("image3"))); 

    ImageView im4 = (ImageView) findViewById(R.id.im4); 
    im4.setImageBitmap(BitmapFactory.decodeFile(i.getStringExtra("image4"))); 

    ImageView im5 = (ImageView) findViewById(R.id.im5); 
    im5.setImageBitmap(BitmapFactory.decodeFile(i.getStringExtra("image5"))); 

    ImageView im6 = (ImageView) findViewById(R.id.im6); 
    im6.setImageBitmap(BitmapFactory.decodeFile(i.getStringExtra("image6"))); 

    ImageButton btn_save_outfit = (ImageButton)findViewById(R.id.btn_combine); 
    btn_save_outfit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Outfits outfits = new Outfits(); 
      outfits.setImage1(i1); 
      outfits.setImage2(i2); 
      outfits.setImage3(i3); 
      outfits.setImage4(i4); 
      outfits.setImage5(i5); 
      outfits.setImage6(i6); 

      Boolean added = handler2.addOutfit(outfits); 
      if(added){ 
       Toast.makeText(getApplicationContext() , "Outfit added." , Toast.LENGTH_LONG).show(); 

       String log = "Id: "+ outfits.getID()+" ,Image1: " + outfits.getImage1() + " ,Image2: " + outfits.getImage2() 

         + ",Image3:" + outfits.getImage3() + ",Image4:" + outfits.getImage5() + ",Image6:" +outfits.getImage6(); 

       Log.d("Image1: ", log); 


      }else{ 
       Toast.makeText(getApplicationContext(), "Outfit not added. Please try again", Toast.LENGTH_LONG).show(); 
      } 


     }}); 
} 



    } 

Outfits.class

public class Outfits { 

private int _id; 
private String _image1; 
private String _image2; 
private String _image3; 
private String _image4; 
private String _image5; 
private String _image6; 

public Outfits(){ 
} 


public Outfits(String image1, String image2, String image3, String image4, String image5 ,String image6){ 

    this._image1 = image1; 
    this._image2 = image2; 
    this._image3 = image3; 
    this._image4 = image4; 
    this._image5 = image5; 
    this._image6 = image6; 
} 

// Id 
public int getID(){ 
    return _id; 
} 

public void setID(int id){ 
    this._id = id; 
} 


// Image1 
public String getImage1(){ 
    return this._image1; 
} 

public void setImage1(String image1){ 
    this._image1 = image1; 
} 


// Image2 
public String getImage2(){ 
    return this._image2; 
} 

public void setImage2(String image2){ 
    this._image2 = image2; 
} 


// Image3 
public String getImage3(){ 
    return this._image3; 
} 

public void setImage3(String image3){this._image3 = image3;} 

// Image4 
public String getImage4(){ 
    return this._image4; 
} 

public void setImage4(String image4){this._image4 = image4; 
} 

// Image5 
public String getImage5(){ 
    return this._image5; 
} 

public void setImage5(String image5){ 
    this._image5 = image5; 
} 

// Image6 
public String getImage6(){ 
    return this._image6; 
} 

public void setImage6(String image6){this._image6 = image6; 
} 

}

Adapter.class

public class OutfitsAdapter extends BaseAdapter { 

private List<Outfits> items; 
private Context context; 
private LayoutInflater inflater; 

public OutfitsAdapter(Context _context, List<Outfits> _items){ 

    inflater = LayoutInflater.from(_context); 
    this.items = _items; 
    this.context = _context; 

} 

@Override 
public int getCount() { 
    return items.size(); 
} 

@Override 
public Object getItem(int position) { 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    Outfits outfits = items.get(position); 

    View view = convertView; 

    if (view == null) { 

     view = inflater.inflate(R.layout.outfit_item, null); 


     ImageView i1 = (ImageView) view.findViewById(R.id.image1); 
     ImageView i2 = (ImageView) view.findViewById(R.id.image2); 
     ImageView i3 = (ImageView) view.findViewById(R.id.image3); 
     ImageView i4 = (ImageView) view.findViewById(R.id.image4); 
     ImageView i5 = (ImageView) view.findViewById(R.id.image5); 
     ImageView i6 = (ImageView) view.findViewById(R.id.image6); 

     i1.setImageBitmap(BitmapFactory.decodeFile(outfits.getImage1())); 
     i2.setImageBitmap(BitmapFactory.decodeFile(outfits.getImage2())); 
     i3.setImageBitmap(BitmapFactory.decodeFile(outfits.getImage3())); 
     i4.setImageBitmap(BitmapFactory.decodeFile(outfits.getImage4())); 
     i5.setImageBitmap(BitmapFactory.decodeFile(outfits.getImage5())); 
     i6.setImageBitmap(BitmapFactory.decodeFile(outfits.getImage6())); 
    } 
    return view; 

} 

}

Database.class

public List<Outfits> readAllOutfits(){ 

    SQLiteDatabase db = this.getWritableDatabase(); 

    List<Outfits> outfits = new ArrayList<Outfits>(); 

    Cursor cursor = db.query(SQLITE_TABLE_2, columns_2, null, null, null, null, null); 

    cursor.moveToFirst(); 

    while (!cursor.isAfterLast()) { 
     Outfits out = new Outfits(); 
     out.setID(Integer.parseInt(cursor.getString(0))); 
     out.setImage1(cursor.getString(1)); 
     out.setImage2(cursor.getString(2)); 
     out.setImage3(cursor.getString(3)); 
     out.setImage4(cursor.getString(4)); 
     out.setImage5(cursor.getString(5)); 
     out.setImage6(cursor.getString(6)); 

     cursor.moveToNext(); 
    } 

    cursor.close(); 
    return outfits; 
} 

而且隨着列表

public class CurrentOutfits extends Activity { 

private List<Outfits> outfits; 

private DatabaseHandler handler2; 

ListView lv_outfits; 

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

    handler2 = new DatabaseHandler(getApplicationContext()); 

    lv_outfits = (ListView) findViewById(R.id.outfits_list); 

    loadOutfits(); 
} 

private void loadOutfits() { 

    outfits = handler2.readAllOutfits(); 

    OutfitsAdapter adapter = new OutfitsAdapter(this, outfits); 

    lv_outfits.setAdapter(adapter); 

    for (Outfits o : outfits) { 
     String record = "ID=" + o.getID() + " | Category=" + o.getImage1() + " | " + o.getImage2(); 
     Log.d("Record", record); 
    } 

} 

}

回答

0

的問題是Database.class你缺少一行檢查了這一點

public List<Outfits> readAllOutfits(){ 

SQLiteDatabase db = this.getWritableDatabase(); 

List<Outfits> outfits = new ArrayList<Outfits>(); 

Cursor cursor = db.query(SQLITE_TABLE_2, columns_2, null, null, null, null, null); 

cursor.moveToFirst(); 

while (!cursor.isAfterLast()) { 
    Outfits out = new Outfits(); 
    out.setID(Integer.parseInt(cursor.getString(0))); 
    out.setImage1(cursor.getString(1)); 
    out.setImage2(cursor.getString(2)); 
    out.setImage3(cursor.getString(3)); 
    out.setImage4(cursor.getString(4)); 
    out.setImage5(cursor.getString(5)); 
    out.setImage6(cursor.getString(6)); 

    outfits.add(out);//this is the line you missed 

    cursor.moveToNext(); 
} 

cursor.close(); 
return outfits; 
} 

希望工程

+0

是的,它完全工作!非常感謝!! – user5805577