我如何通过android中的意图传递视图

时间:2014-03-05 11:55:23

标签: android view cursor broadcastreceiver android-cursoradapter

我正在使用一个列表,该列表使用扩展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"

        }

2 个答案:

答案 0 :(得分:0)

在Intent Service中下载图像并将该图像转换为适配器类是一个漫长的过程。如果您有兴趣,我会为您提供解决方案。

使用Universal Image Loader库下载图像。你不必担心任何事情。图书馆本身包含许多内置方法。你可以使用它们。

请参阅this主题使用Universal Image Loader

答案 1 :(得分:0)

除了intentbooleanintegerstringChar之外,您不能直接通过Float传递任何数据类型和其他原始数据类型。

通过parcelable intent传递任何其他类型。使用parcelable,您可以传递任何类型的object。以下是parcelable的{​​{3}}以及如何使用

创建一个名为newInstance(Object o)的公共方法,并在此方法中调用默认构造函数并将对象值设置如下:

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