如何在这种情况下获取应用程序上下文?

时间:2015-09-06 22:41:31

标签: android

我是Android开发的新手,我已经学习了大约4个月。

我正在尝试让我的应用程序上下文使用名为picasso的库。我构建了一个服装适配器来将图像加载到我的imageview。

但是我在获取应用程序上下文时遇到了一些问题,我尝试使用getBaseContext,getActivity(),并创建了一个变量来获取上下文,但它没有用。

我正在使用片段构建我的应用程序,我的代码:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_one, container, false);

        final ArrayList alEvents = new ArrayList<String>();

        eventsAdapter = new costumeadapter(getActivity(), alEvents,
                R.layout.list, new String[] { ITEM_NAME, ITEM_EVENT },
                new int[] { R.id.name, R.id.current_event });

        lvEvents.setAdapter(eventsAdapter);

...

}

我的服装适配器:

public class costumeadapter extends SimpleAdapter {

    Context context;

    public costumeadapter(FragmentActivity fragmentActivity,
            List<? extends Map<String, ?>> data, int resource, String[] from,
            int[] to) {
        super(fragmentActivity, data, resource, from, to);
        // TODO Auto-generated constructor stub
    }

    public View getView(final int position, final View convertView,
            final ViewGroup parent) {
        View v = super.getView(position, convertView, parent);
        ImageView bg_image = (ImageView) v.findViewById(R.id.bg_image);


        Picasso.with(context)
                .load("http://pplware.sapo.pt/wp-content/uploads/2015/06/Wallpaper_10.jpg")
                .into(bg_image);

        return v;

    }

}

你们可以给我任何解决方案吗?感谢。

4 个答案:

答案 0 :(得分:1)

使用convertView.getContext()v.getContext()获取传递给Picasso.with方法的上下文:

Picasso.with(convertView.getContext())
       .load("<IMAGE_URL>")
       .into(bg_image);

答案 1 :(得分:0)

在适配器中,声明:

final Context localContext;

之后:

 public costumeadapter(FragmentActivity fragmentActivity,
            List<? extends Map<String, ?>> data, int resource, String[] from,
            int[] to) {
        super(fragmentActivity, data, resource, from, to);
        this.localContext = fragmentActivity;
    }

在localContext变量中,您将拥有一个上下文。

答案 2 :(得分:0)

您应该包括如何尝试获取不适合您的上下文,但我认为这将有效

public View getView(final int position, final View convertView,
        final ViewGroup parent) {
    View v = super.getView(position, convertView, parent);
    ImageView bg_image = (ImageView) v.findViewById(R.id.bg_image);


    context = parent.getContext();
    Picasso.with(context)
            .load("http://pplware.sapo.pt/wp-content/uploads/2015/06/Wallpaper_10.jpg")
            .into(bg_image);

    return v;

}

答案 3 :(得分:0)

您可以将Activity传输到片段。在fragment类中,覆盖onActivityCreated以获取包含片段的Activity。然后从此活动获取上下文