当前位置: 首页 > 面试题库 >

从适配器调用Fragment方法

庄兴发
2023-03-14
问题内容

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

这是我的代码

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

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;
    }

我该怎么做?


问题答案:

编辑: 这是我现在要使用的。下面提供了较旧的“更轻松”的解决方案。

MyFragment extends Fragment implements CustomAdapter.EventListener {

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        CustomAdapter adapter = new CustomAdapter(..., this);

    }

    void onEvent(int data) {
        doSomething(data);
    }

}

CustomAdapter extends BaseAdapter {

    EventListener listener;

    public interface EventListener {
        void onEvent(int data);   
    }

    public CustomAdapter(..., EventListener listener) {
        this.listener = listener; 
    }

    ...

}

现在,可以从适配器中的任何位置调用listener.onEvent(data);该片段中的方法。

而且,除了通过构造函数提供侦听器之外,我们还可以在适配器中添加另一个方法,例如registerListener(EventListener eventListener),然后在需要时维护侦听器列表。

旧答案:

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

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

就像是 :

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

并更新Adapter的构造函数:

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

然后您可以使用fragment变量调用方法。

fragment.doSomething();


 类似资料:
  • 但问题是我想知道如何从类中的片段调用方法?这是我的代码 下面是在活动中工作但在片段中不工作的代码

  • 问题内容: 所以我有一个自定义的listview。就像Instagram布局一样,每个列表项中都有1张图片和一堆按钮。所以这是问题所在: 我要实现共享按钮。为此,我尝试创建一个从适配器到活动的回调。但这似乎没有用。这是我到目前为止的内容(我裁剪了不相关的部分): 主要活动 列表适配器 错误日志: 问题答案: 您需要告诉适配器使用哪个OnShareClickedListener()实现。现在,在您的

  • 问题内容: 我有一个风俗习惯。此行中的每一行都有一个图标和一些文本。这些图标在后台下载,缓存并使用回调(分别替换为)进行下载。每次getView()运行都会触发从缓存或下载中获取缩略图的逻辑。 现在,根据Romain Guy所说: “绝对不能保证的调用顺序和次数。 我已经看到这种情况的发生,因为大小为2的一行getView()被调用了6次! 如何更改代码以避免重复的缩略图获取请求并处理视图回收?

  • 这是我在GridView中显示图像和文本的活动。 我将在此的其他活动中使用Intent。 使用setAdapter方法出错。 下面是我的适配器。 这是我的适配器我不知道哪里出了问题。 启动此活动时,我的应用程序崩溃。

  • 在我的主要活动中,我有三个循环利用的观点。 其中一个在底部工作表中,它是主要的(默认情况下,底部工作表是打开以显示这个),在其适配器的onbind方法中,我做了一个onClickListener,以便当用户单击其中的项目时,我想要, 我想回到主活动类来设置To Start一个方法,它的滚动是关闭底表并为下一个回收视图设置数据(当底表关闭时会出现) ......这里的问题是如何从onBind方法的L

  • 我很难用简单的游标适配器从sqlite数据库填充微调器。我必须使用一个简单的游标适配器,而不是数组适配器。我的主要活动、函数和xml文件如下: 功能如下: xml文件在下面; 当我运行应用程序时,将显示以下屏幕。有数据,但似乎是空的。我有_ id,列的名称。 空微调器 谢谢你的帮助。