android 自定义Loader`

1 继承 AnsyncTaskLoader 类

2   实现 loadInBackground 方法

3  使用 LoaderManager初始化 Loader

4   在 LoaderCallbacks 接口的 onCreateLoader 方法中放回 自定义的loader

1

public class UserLoader extends AsyncTaskLoader<List<UserBean>> {

    public UserLoader(@NonNull Context context) {
        super(context);
    }

    @Override
    protected void onStartLoading() {
        super.onStartLoading();
        if(isStarted()){ //如果load启动 强制执行loadInBackground;
            forceLoad();
        }
    }

    //在子线程加载数据
    @Nullable
    @Override
    public List<UserBean> loadInBackground() {
        //
        List<UserBean> list = new ArrayList<>();
        list.add(new UserBean("小雪","xu"));
        list.add(new UserBean("小飞","xf"));
        list.add(new UserBean("小宇","xy"));
        return list;
    }
}
public class CustomLoader extends AppCompatActivity  {

    @BindView(R.id.listuser)
    ListView listuser;
    private List<UserBean> list = new ArrayList<>();
    LoaderManager manager;
 private UserAdapter mAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_custom_loader);
        ButterKnife.bind(this);
        mAdapter = new UserAdapter();
        listuser.setAdapter(mAdapter);
        manager = LoaderManager.getInstance(this);
        manager.initLoader(12, null, new LoaderManager.LoaderCallbacks<List<UserBean>>() {
            @NonNull
            @Override
            public Loader<List<UserBean>> onCreateLoader(int id, @Nullable Bundle args) {
                return new UserLoader(CustomLoader.this);
            }

            @Override
            public void onLoadFinished(@NonNull Loader<List<UserBean>> loader, List<UserBean> data) {
                list.addAll(data);
                mAdapter.notifyDataSetChanged();
            }

            @Override
            public void onLoaderReset(@NonNull Loader<List<UserBean>> loader) {

            }

        });
    }


    class UserAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public UserBean getItem(int position) {
            return list.get(position);
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder = null;
            if (convertView == null) {
                convertView = LayoutInflater.from(CustomLoader.this).inflate(R.layout.user_item,
                        parent, false);
                viewHolder = new ViewHolder(convertView);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }

            viewHolder.username.setText(getItem(position).getUsername());
            viewHolder.password.setText(getItem(position).getPassword());
            return convertView;
        }

         class ViewHolder {
            @BindView(R.id.username)
            TextView username;
            @BindView(R.id.password)
            TextView password;

            ViewHolder(View view) {
                ButterKnife.bind(this, view);
            }
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值