从适配器调用Fragment方法 [英] Call a Fragment method from an Adapter

查看:518
本文介绍了从适配器调用Fragment方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的片段中有一个方法 sendData()。此方法启动一个新的Activity。我想从我的 ArrayAdapter 调用此方法。

I have a method sendData() in my fragment. This method starts a new Activity. I want to call this method from my ArrayAdapter.

这是我的代码: -

Here is my code:-

HomeFragment.java

HomeFragment.java

stagAdaper = new StaggeredAdapter(myContext, android.R.layout.simple_list_item_1, getList);
            mGridView.setAdapter(stagAdaper);
    private void sendData(int position)
    {

        myDialog = new ProgressDialog(myContext).show(getActivity(), "Fetching news..", "Just a moment");

        myDialog.getWindow().setContentView(R.layout.openarticlewaitprogress);
        myDialog.getWindow().setTitle("Loading..");
        myDialog.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
         new  NewsDetails(myDialog);



            Intent nIntent = new Intent(getActivity(),Details.class);

               String Body=getList.get(position).getBody();

            newsIntent.putExtra("Body", Body);


            startActivity(nIntent);

    }

StaggeredAdapter.java

StaggeredAdapter.java

viewHolder.layGridLayout.setOnClickListener(new View.OnClickListener() 
    {

        @Override
        public void onClick(View v) 
        {
            // TODO Auto-generated method stub
            //viewHolder.layGridLayout.setForeground(R.drawable.foreground_selector);

        }
    });
    return convertView;
    }

我该怎么办?

推荐答案

解决方案1:
使适配器成为片段的内部类,以便您可以直接调用该方法。

Solution 1 : Make the adapter an inner class of your fragment, so that you can call the method directly.

解决方案2:
更新适配器构造函数以接受Fragment作为参数。

Solution 2 : Update your adapter constructor to accept the Fragment as a parameter.

类似于:

customAdapter = new CustomAdapter(myContext, android.R.layout.simple_list_item_1, getList, HomeFragment.this);

并更新适配器的构造函数:

and update the constructor of the Adapter :

public CustomAdapter(Context context, int id, HomeFragment fragment) {
    this.fragment = fragment;
}

然后使用片段变量调用方法。

then you call methods using the fragment variable.

fragment.doSomething();

这篇关于从适配器调用Fragment方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆