片段和baseadapter之间的Android通信

需要专家意见我应该如何构建这个问题。 我有一个自定义方法process_filter ,它驻留在一个片段中,因为它需要访问该片段的私有TextViewList

在处理过程中,这个片段将访问BaseAdapter ,在这个BaseAdapter我需要使用back process_filter方法

基本上这里是结构:

MyFragment.java

 public class MyFragment extends Fragment { private List filter_list; private TextView no_of_filter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.my_fragment_layout, container, false); no_of_filter = (TextView) view.findViewById(R.id.no_of_filter_tv); . MyAdapter custom_adapter = new MyAdapter(context, "string 1", "string 2"); . process_filter("string 1", "string 2"); . } public void process_filter(String in_preference, String current_value) { no_of_filter.setText(in_preference); } 

MyAdapter.java

  class MyAdapter extends BaseAdapter { public View getView( final int position, View convertView, ViewGroup parent) { holder.checkBox.setOnClickListener( new View.OnClickListener() { public void onClick(View v) { //Here I need to access back process_filter from fragment process_filter ("string 1, string 2"); } } } } 

创建从适配器到片段的接口。

在适配器中创建接口并将其传递到适配器的构造函数中

 class MyAdapter extends BaseAdapter { public interface IProcessFilter { void onProcessFilter(String string1, String string2) } private IProcessFilter mCallback; public MyAdapter(Context context, String string1, String string2, IProcessFilter callback) { mCallback = callback; } public View getView( final int position, View convertView, ViewGroup parent) { holder.checkBox.setOnClickListener( new View.OnClickListener() { public void onClick(View v) { mCallback.onProcessFilter("string1", "string2"); } } } } 

最后,在你的片段中实现它

 public class MyFragment extends Fragment implements IProcessFilter { ... ... @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.my_fragment_layout, container, false); no_of_filter = (TextView) view.findViewById(R.id.no_of_filter_tv); MyAdapter custom_adapter = new MyAdapter(context, "string 1", "string 2", this); } @Override public void onProcessFilter(String string1, String string2) { // Process the filter } }