我正在使用一个列表,该列表使用扩展CursorAdaptor的自定义适配器,我想在下载图像时将它们放在适配器布局中,我使用intentService下载图像我用一个reciver回来,现在我的onRecive finction中有我的图像,但我对如何将它放在新CursorAdapter中的视图中进行了缓冲,有人知道吗?
光标适配器:
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 :(得分:0)
在Intent Service中下载图像并将该图像转换为适配器类是一个漫长的过程。如果您有兴趣,我会为您提供解决方案。
使用Universal Image Loader库下载图像。你不必担心任何事情。图书馆本身包含许多内置方法。你可以使用它们。
请参阅this
主题使用Universal Image Loader
答案 1 :(得分:0)
除了intent
,boolean
,integer
,string
,Char
之外,您不能直接通过Float
传递任何数据类型和其他原始数据类型。
通过parcelable
intent
传递任何其他类型。使用parcelable
,您可以传递任何类型的object
。以下是parcelable
的{{3}}以及如何使用
或强>
创建一个名为newInstance(Object o)
的公共方法,并在此方法中调用默认构造函数并将对象值设置如下:
public MyActivity newInstance(MyObject o){
MyActivity activity = new MyActivity();
this.myObject = o;
return activity;
}