发表于: 2018-10-01 23:55:39
0 752
一、今天完成的事情
继续任务三中的列表页。
从网络数据库中查询的护工数据,然后用RecyclerView将其展示出来,查询数据这一块看了半天没什么头绪,主要完成了本地的RecyclerView。RecyclerView是安卓开发中最常用的控件之一,其难点在于数据不能直接加载到
RecyclerView中,二者之间需要用适配器adapter来关联。要实现适配器必须重写三个方法:
1. public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
将holder返回给recyclerView使用;
2. public void onBindViewHolder(ViewHolder holder, int position)
设置RecyclerView子布局上的实例;
3. public int getItemCount()
返回子布局个数。
public class WorkerAdapter extends RecyclerView.Adapter<WorkerAdapter.ViewHolder> {
private List<Worker> workerList;
public WorkerAdapter(List<Worker> list) {
workerList = list;
}
public class ViewHolder extends RecyclerView.ViewHolder {
View workerView;
TextView workerNameTV;
TextView workerLevelTV;
TextView workerLocationTV;
public ViewHolder(View view) {
super(view);
workerView = view;
workerNameTV = (TextView)view.findViewById(R.id.tv_workerName);
workerLevelTV = (TextView)view.findViewById(R.id.tv_workerLevel);
workerLocationTV = (TextView)view.findViewById(R.id.tv_workerLocation);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.worker_item, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Worker worker = workerList.get(position);
holder.workerNameTV.setText(worker.getWorker().getUsername());
holder.workerLevelTV.setText(worker.getWorkerLevel());
holder.workerLocationTV.setText(worker.getWorkLocation());
}
@Override
public int getItemCount() {
return workerList.size();
}
}
另外,要想使用RecyclerView就必须添加依赖库。
二、明天计划的事情
继续学习数据查询和筛选。
三、遇到的问题
今天添加依赖库时遇到一个报错:
All com.android.support libraries must use the exact same version specification ......
报错:com.android.support的包版本号不一致,可能我们自己新建的项目的com.android.support包版本号要高一些,一些第三方的库的com.android.support可能没有及时更新support库,就会出现这个错误。
可以通过Grovvy脚本修改版本号解决冲突,在其存在冲突的module中的build.gradle文件中加入下面代码,原理就是通过遍历所有依赖,并修改指定库的版本号,其中
requested.group == 'com.android.support' 表示要修改的依赖库,
details.useVersion '28.0.0-rc01' 表示要修改的版本号。
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '28.0.0-rc01'
}
}
}
}
四、收获
评论