从适配器调用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; } 

我该怎么做?

Solutions Collecting From Web of "从适配器调用Fragment方法"

解决方案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) ........ }