发表于: 2018-10-01 23:55:39

0 610


一、今天完成的事情

    继续任务三中的列表页。

    从网络数据库中查询的护工数据,然后用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'
        }
     }
  }
}


四、收获

    



返回列表 返回列表
评论

    分享到