BaseActivity+BaseAdapter+BaseFragment

本文探讨了在Android开发中使用基类设计模式的实践,通过创建BaseActivity、BaseFragment和BaseAdapter等基类,实现了代码的复用、规范化和便于维护的目标。文章详细介绍了如何在具体的Activity、Fragment和Adapter子类中实现抽象方法,以完成视图初始化、数据加载等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BaseActivity

public abstract class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    setContentView(getLayoutResId());

    //共同的行为
    //规范化
    //便于维护
    initView();

    initData();

    //后期需求 共同行为
    //统计
    //沉浸式
}


@Override
protected void onDestroy() {
    super.onDestroy();
    //统计
}

protected abstract int getLayoutResId();

protected abstract void initData();

protected abstract void initView();

Activity的加载

public class FourActivity extends BaseActivity {
    @Override
    protected int getLayoutResId() {
        return 0;
    }

@Override
protected void initData() {

}

@Override
protected void initView() {

    }
}

BaseFragment

public abstract class BaseFragment extends Fragment {

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    //return super.onCreateView(inflater, container, savedInstanceState);
    return inflater.inflate(getLayoutResId(), container, false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    initView(view);
    initData();
}

protected abstract void initData();

protected abstract void initView(View view);

protected abstract int getLayoutResId() ;

继承Fragment

public class HomeFragment extends BaseFragment {
    @Override
    protected void initData() {

    }

    @Override
    protected void initView(View view) {
        //view.findViewById();
    }

    @Override
    protected int getLayoutResId() {
        return 0;
    }
}

BaseAdapter

public abstract class MyBaseAdapter<T> extends BaseAdapter {

private List<T> mDatas;
protected Context mContext;

public MyBaseAdapter(Context mContext) {
    this.mContext = mContext;
    mDatas = new ArrayList<>();
}

public void setDatas(List<T> datas) {
    mDatas.clear();
    if(datas != null) {
        mDatas.addAll(datas);
    }
    notifyDataSetChanged();
}

public void addDatas(List<T> datas) {
    if(datas != null) {
        mDatas.addAll(datas);
        notifyDataSetChanged();
    }
}

@Override
public int getCount() {
    return mDatas.size();
}

@Override
public T getItem(int position) {
    return mDatas.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

继承Adapter

public class NewsAdapter<String> extends MyBaseAdapter {

    public NewsAdapter(Context mContext) {
        super(mContext);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return null;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值