从适配器调用Fragment方法

我的片段中有一个方法sendData() 。 此方法启动一个新的Activity。 我想从我的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; } 

我该怎么做?

  • 如何在ListFragment上实现pull刷新
  • TabLayout中的选项卡未填满整个ActionBar
  • 带有lockCanvas()的Android TextureView硬件加速
  • 以XML定义的布尔值。 如何在Java中引用?
  • AndroidDebugKey密钥库被篡改,或密码不正确
  • View.OnClickListener,方法还是类?
  • Java,HttpURLConnection和设置内容长度
  • 如何在Bundle中传递自定义对象?
  • 解决方案1:使适配器成为片段的内部类,以便您可以直接调用该方法。

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

    就像是 :

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

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

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

    然后使用fragmentvariables调用方法。

     fragment.doSomething(); 

    我知道现在回答已经很晚了,但还有两种方法可以做到:

    1. 您也可以从adapter发送broadcast并将其注册为fragment

    2. 使用界面。 有关详细信息,请参阅此问题。

    您可以将sendData方法设为静态

     public static void sendData(int position) { ...... } 

    n称之为

     @Override public void onClick(View v) { // TODO Auto-generated method stub HomeFragment.sendData(position) ........ }