本篇文章送给Android的初学者.
一.场景一:
某activity或fragment是一个较复杂的界面,假设其中含有一个列表和列表外其他控件组成.现在有一个需求就是点击列表条目,去改变列表外其他控件的UI.那么此时使用接口是一个不错的选择:
1)首先无论是listview还是recyclerview,在adapter中定义一个接口
例:
public interface MyClickListener{
void clickListener();
}
2)adapter中声明该接口
private MyClickListener mListener;
3)adapter的构造方法中传入改接口
public ContactAdapter(Context context,AbsListView view, ArrayList<Contact> mDatas, MyClickListener listener) {
super(view, mDatas, R.layout.item_list_contact);
mContext = context;
datas = mDatas;
if (datas == null) {
datas = new ArrayList<>();
}
Collections.sort(datas);
mListener = listener;
}
4)item的点击事件中可以调用
mListener .clickListener();
5)在看fragment类:
首先 fragment实现MyClickListener接口,重写clickListener方法;
public class fragment implements ContactAdapter.MyClickListener {
@Override
public void clickListener() {
refresh();
}
}
然后 new adapter构造方法中传入this接口.
mAdapter = new ContactAdapter(getActivity(),mListView, list,this);
最后 clickListener方法中 调用逻辑代码(refresh())刷新界面.
@Override
public void clickListener() {
refresh();
}
二.场景二:
mainactivity中有n个fragment.要点击一个fragment3中的按钮,刷新另一个fragment2的UI,此时接口又是一个不做的选择.Mainactivity是这些fragment的共同载体.
1)首先 fragment3中 定义一个接口 并 声明
private CleanChatListener listener;
public interface CleanChatListener {
void CleanChat(); //参数为用户需要传递的数据内容,这里我用的是一个Component对象
}
2)onCreateView方法中初实例化该接口
//实例化该接口
listener = (CleanChatListener)getActivity();
- 点击事件或其他事件中调用:
listener.CleanChat();
4)在来看mainactivity
首先 mainactivity实现该接口,然后重写CleanChat方法,CleanChat方法中调用fragment2中的刷新方法.
public class MainActivity extends BaseActivity implements AccountFragment.CleanChatListener {
@Override
public void CleanChat() {
fragment2.refresh();
}
}
ok,就到这里了.本篇文章就是写给java基础薄弱的android初级开发者.因为作者也曾经是一个初级开发者,java基础不强,希望对大家有所帮助!