0

我有一個問題,我現在還無法解決,這個問題可能對你們中的一些人來說很簡單,但我實在無法進一步處理。 我暫時將數據庫中的對象存儲在數組List中,並且可以將這些對象作爲列表視圖顯示在我的應用程序中。不過,我需要將點擊的項目傳遞給另一個活動。 我試圖通過這個如下。我怎樣才能將點擊的圖像傳遞給另一個類

  ListView lv = getListView(); 

     lv.setOnItemClickListener(new OnItemClickListener(){ 


     public void onItemClick(AdapterView<?> parent,   
       View view,int position, long id) { 
     // TODO Auto-generated method stub 
     Intent in = new Intent(getApplicationContext(), 
     Property.class); 


     in.putExtra("temp_image", image);  
     in.putExtra("temp_identifier", identif);  
     in.putExtra("temp_bedrooms", bedrooms);  
     in.putExtra("temp_address", address); 
     in.putExtra("temp_propType", propType); 
     startActivity(in); 

     }}); 

和從另一個活動

 identif = getIntent().getExtras().getStringArrayList("temp_identifier"); 
    bedrooms = getIntent().getExtras().getStringArrayList("temp_bedrooms"); 
    address = getIntent().getExtras().getStringArrayList("temp_address"); 
    propType = getIntent().getExtras().getStringArrayList("temp_propType"); 
    image = getIntent().getExtras().getParcelable("temp_image"); 

      img = (ImageView) view.findViewById(R.id.image);  
      img.setImageBitmap(BitmapFactory.decodeByteArray(
       image.get(POSITION), 0,  
            image.get(POSITION).length)); 

上述否則接收具有兩個挫折。

1)返回一個數組列表對象(未含)

2)我無法通過圖片

我怎麼只顯示點擊的數組列表項目和其他活動顯示。

編輯後的版本:強大的文本

**Here is how i'm querying the images!** 



      private void getDataAndPopulate() { 
    // TODO Auto-generated method stub 
    image = new ArrayList<byte[]>(); 
    identif = new ArrayList<String>(); 
    price= new ArrayList<String>(); 
    bedrooms= new ArrayList<String>(); 
    address= new ArrayList<String>(); 
    propType= new ArrayList<String>(); 

    Cursor cursor = getEvents(" gall,properties where properties._id = 
     gall._id "); 
    //Select* from gall,properties where properties.propertyId = gall.GallId 
    while (cursor.moveToNext()) { 
     String temp_id = cursor.getString(0); 
     byte[] temp_image = cursor.getBlob(2); 
     String temp_identifier = cursor.getString(1); 
     String temp_price = cursor.getString(3); 
     String temp_bedrooms = cursor.getString(4); 
     String temp_address = cursor.getString(5); 
     String temp_propType = cursor.getString(6); 


     image.add(temp_image); 
     identif.add(temp_identifier); 
     price.add(temp_price); 
     bedrooms.add(temp_bedrooms); 
     address.add(temp_address); 
     propType.add(temp_propType); 


      } 

和getDataAndPopulate()是

  private Cursor getEvents(String table) { 
    SQLiteDatabase db = (placeData).getReadableDatabase(); 
    Cursor cursor = db.query(table, null, null, null, null, null, null);  
    return cursor; 

} 

在這裏,我ASING他們適配器。

 String[] identifierArray = (String[]) identif.toArray(new String[identif 
                    .size()]); 
    ItemsAdapter itemsAdapter = new ItemsAdapter(Result.this, 
    R.layout.item, identifierArray); 
    setListAdapter(itemsAdapter); 

在此先感謝

回答

1

束具有非常小的限制,這就是爲什麼你收到此失敗的粘結劑交易,你試圖傳遞太多的位圖超過捆綁的最大尺寸。既然你是從數據庫中獲得這些信息,爲什麼不傳遞圖像的主鍵並從下一個活動中再次從數據庫中檢索圖像呢?

+0

Ragunath Jawahar,感謝有用的迴應我同意我傳遞一組錯誤的圖像數組。我的目標是隻傳遞點擊的圖像,這應該是較少的位圖處理,但我無法在此論壇上找到任何解決方案或google.How我可以通過該圖像點擊到另一個活動? – SomCollection 2012-03-08 10:19:59

+0

我想這裏是我的問題,String [] identifierArray =(String [])identif.toArray(new String [identif .size()]); ItemsAdapter adapter = new ItemsAdapter(Property.this,R.layout.item, identifierArray); – SomCollection 2012-03-08 10:22:22

+0

你是如何查詢數據庫中的圖像的? – 2012-03-08 10:41:18

0

Bitmap s爲Parcelable,所以你可以把他們當臨時演員。從您的繪製使用得到的位圖下面的代碼:

if(myImage instanceof BitmapDrawable) { // myImage is a Drawable 
    BitmapDrawable bitmapDrawable = (BitmapDrawable) myImage; 
    Bitmap bedroomBitmap = bitmapDrawable.getBitmap(); 

    Intent intent = new Intent(); 
    intent.putExtra("bedroom", bedroomBitmap); 

    ... 
} 

要轉換的byte []使用此:

Bitmap bedroomBitmap = BitmapFactory.decodeByteArray(bedroomBytes, 0, bedroomBytes.length); 
intent.putExtra("bedroom", bedroomBitmap); 
+0

,圖像來了一個數據庫作爲字節[],我可以將它們顯示爲列表我只是想將它們傳遞給另一個活動將這樣做的工作?? – SomCollection 2012-03-07 13:40:45

+0

查看已更新的答案。 – 2012-03-07 13:47:31

0

使用BitmapFactory,然後使用intent.putExtra獲取圖像的位圖( )並放置該位圖。在下一個活動中,使用getIntent()。getParcelableExtra()獲取該位圖,然後使用image.setImageBitmap()將該位圖設置爲圖像。

+0

多數民衆贊成正是我所做的,但我越來越!!!!失敗的粘合劑交易從logCat – SomCollection 2012-03-07 13:45:32

+0

代碼你粘貼有圖像,這是什麼,它是一個位圖或imageView參考 – 2012-03-07 13:47:54

+0

檢查我的問題更新請。 – SomCollection 2012-03-07 13:57:00

0

轉換圖像的base64字符串通過故意發送,然後再轉換爲字符串的位圖文件,這會做的伎倆,它爲我工作

Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath); 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100, stream); 
byte[] byteArray = stream.toByteArray(); 
encode = Base64.encodeBytes(byteArray); 
byte[] decode = Base64.decode(encode); 
Bitmap bmp = BitmapFactory.decodeByteArray(decode, 0,decode.length); 
imgview_photo.setImageBitmap(bmp); 
+0

你能告訴我一些代碼嗎? – SomCollection 2012-03-07 13:46:22

+0

有一個類將圖像轉換爲base64編碼,這裏是我的代碼的一部分,以從相機獲取圖像,然後使用base64將變量轉換爲字符串,我使用變量「encode」通過肥皂發送 – 2012-03-07 13:52:09

+0

您需要一個外部Android版本的Base64編解碼器至2.1。它可以從API Level 8(Android 2.2)及以上版本獲得。但恕我直言,這不是一個好的做法,將字節轉換爲字符串,然後轉換爲位圖。爲什麼你需要做很多轉換? – 2012-03-07 13:52:32

相關問題