项目要求
基于第一次作业的模块实现recycleview的简单使用
设计效果
实现思路
- 添加v7包中的recycleview依赖
- 将 RecyclerView 控件添加到原有的布局中
- 添加adapter方法类
- 在frdfragment中实现
项目结构图
代码展示
adapter类
package com.example.dell.myapplication;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
/**
* Created by dell on 2020/3/28.
*/
public class adapter extends RecyclerView.Adapter<adapter.Myviewholder> {
private List<String>list;
private Context context;
private View inflater;
public adapter(Context context, List<String> list) {
this.context = context;
this.list = list;
}
@Override
public adapter.Myviewholder onCreateViewHolder(ViewGroup parent, int viewType) {
inflater = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
Myviewholder myviewholder = new Myviewholder(inflater);
return myviewholder;
}
@Override
public void onBindViewHolder(adapter.Myviewholder myviewholder, int j) {
myviewholder.textView.setText(list.get(j));
}
@Override
public int getItemCount() {
return list.size();
}
class Myviewholder extends RecyclerView.ViewHolder{
TextView textView;
public Myviewholder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
}
}
package com.example.dell.myapplication;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
/**
* A simple {@link Fragment} subclass.
*/
public class frdFrament extends Fragment {
private RecyclerView recyclerView;
private List<String> list;
private Context context;
private adapter adapter;
public frdFrament() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab_02, container, false);
context = this.getActivity();
recyclerView = view.findViewById(R.id.recycleview);
list = new ArrayList<>();
list.add("奥兹曼迪亚斯(杨绛 译)");
list.add("");
list.add("雪莱");
list.add("");
list.add("我遇见一位来自古国的旅人");
list.add("");
list.add("他说:有两条巨大的石腿");
list.add("");
list.add("半掩于沙漠之间");
list.add("");
list.add("近旁的沙土中,有一张破碎的石脸");
list.add("");
list.add("抿着嘴,蹙着眉,面孔依旧威严");
list.add("");
list.add("想那雕刻者,必定深谙其人情感");
list.add("");
list.add("那神态还留在石头上");
list.add("");
list.add("而斯人已逝,化作尘烟");
list.add("");
list.add("“我是万王之王,奥兹曼斯迪亚斯");
list.add("");
list.add("功业盖物,强者折服”");
list.add("");
list.add("此外,荡然无物");
list.add("");
list.add("废墟四周,唯余黄沙莽莽");
list.add("");
list.add("寂寞荒凉,伸展四方");
LinearLayoutManager manager = new LinearLayoutManager(context);
manager.setOrientation(LinearLayoutManager.VERTICAL);
adapter = new adapter(context, list);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(manager);
return view;
}
}
遇到的困难
虽然最后的展示效果很简单,但是在做出来的过程中遇到了很多小麻烦,这里一一记录下来
添加依赖的时候发现build.gradle报错,提示词显示“依赖库版本和编译sdk版本不同“ 我的编译版本为29 而依赖库版本只有26 后来尝试了运行了一次老师上课演示的Demo 发现这个问题没有影响 就暂时没有管它了
运行时出现如上错误,控制台提示APPcompact需要有个主体 theme。 上网查资料发现是继承activity的项目使用了Appcompatactivity下的依赖包(这里为recycleview),后来在style文件中将图一改成图二即可
运行时控制台提示setLayoutManager方法的对象为空,询问老师发现是自己把控制代码写进了MainActivity.java里😂,难怪一直报空指针异常。把代码改到fragment.java里即可。
- 其他问题
以后要养成先声明变量再写类函数的习惯。