1

我正在使用擴展CursorAdaptor的自定義適配器pupolated的列表,我想下載圖像,並將它們放在適配器佈局中,我使用intentService來下載圖像我拿回了一個reciver,現在我在我的onRecive finction中有我的圖像,但是我爲什麼可以將它放在新的CursorAdapter中的視圖中,有人知道嗎?我怎樣才能通過意圖傳遞視圖android

光標適配器:

public class MyAdapter extends CursorAdapter{ 

    public MyAdapter(Context context, Cursor c) { 
     super(context, c); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor c) { 


     String name = c.getString(c.getColumnIndex(ContractPlaces.Places.NAME)); 
     String address = c.getString(c.getColumnIndex(ContractPlaces.Places.ADDRESS)); 
     String type = c.getString(c.getColumnIndex(ContractPlaces.Places.TYPE)); 
     float rating = c.getFloat(c.getColumnIndex(ContractPlaces.Places.RATING)); 
     String icon = c.getString(c.getColumnIndex(ContractPlaces.Places.ICON)); 

     TextView nameView = (TextView) view.findViewById(R.id.name); 
     TextView addressView = (TextView) view.findViewById(R.id.address); 
     TextView typeView = (TextView) view.findViewById(R.id.type); 
     TextView ratingView = (TextView) view.findViewById(R.id.rating); 

     ImageView iconView = (ImageView) view.findViewById(R.id.icon); 

     nameView.setText(name); 
     addressView.setText(address); 
     typeView.setText("Type: "+type); 
     ratingView.setText("Rating: "+String.valueOf(rating)); 


     // iconView - this is where i would like to place tha image from the reciver  

    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     // TODO Auto-generated method stub 
      return getActivity().getLayoutInflater().inflate(R.layout.cursor_layout, parent, false); 
     } 


class ImageReceiver extends BroadcastReceiver{ 

     @Override 
     public void onReceive(Context context, Intent intent) { 

      Bitmap b = intent.getParcelableExtra("image"); 
//this is the image i would like to place in the view "iconView" 

     } 

回答

0

它是一個漫長的過程,以下載意圖服務的圖像和獲取圖像適配器類。如果您感興趣,我爲您提供解決方案。

使用通用圖像加載器庫下載圖像。你不需要擔心任何事情。圖書館本身由許多內置的方法組成。你可以使用它們。

看到this線程使用你不允許直接通過intent傳遞任何數據類型,除了booleanintegerstringCharFloat和其他元數據類型的通用圖像裝載機

0

通過任何其他類型將通過parcelableintent。使用parcelable,您可以通過任何類型的任何object。這裏是parcelableexample以及如何使用它

OR

創建一個名爲newInstance(Object o)公共方法,在這種方法中調用默認的構造函數,並設置你的對象值如下:

public MyActivity newInstance(MyObject o){ 
    MyActivity activity = new MyActivity(); 
    this.myObject = o; 
    return activity; 
} 
+0

我認爲你不會說像char,float和其他許多數據類型。你也忘記了可序列化的對象。 –

+0

@Shayanpourvatan,是的,但我的意思是原始數據類型,但我會添加它謝謝 –