遇到的问题:
因为adapter是2个类,我在setData()方法中,获取list集合的值,会包错,因为在Holder类中找不到list,所以在调用Holder的时候,传一个List集合
1、Activity:
public class MainActivity extends AppCompatActivity {
private RecyclerView rv;
private RecyclerView.Adapter myAdapter;
private List<String> mDatas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rv = (RecyclerView) findViewById(R.id.rv);
initData();
//TODO
rv.setLayoutManager(new LinearLayoutManager(this));//这里用线性显示 类似于listview
myAdapter = new MyAdapter(this, mDatas);
rv.setAdapter(myAdapter);
}
protected void initData() {
mDatas = new ArrayList<String>();
// for (int i = 'A'; i < 'z'; i++) {
// mDatas.add("" + (char) i);
// }
for (int i = 0; i < 10; i++) {
mDatas.add("练习" + i);
}
}
}
2、适配器:
class MyAdapter extends RecyclerView.Adapter {
Context context;
private List<String> list = new ArrayList<String>();
public MyAdapter(Context context, List<String> list) {
this.context = context;
this.list = list;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.item, null);
Holder holder = new Holder(view, list);
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
final Holder h = (Holder) holder;
h.setData(position);
}
@Override
public int getItemCount() {
return list.size();
}
}
class Holder extends RecyclerView.ViewHolder {
TextView mtv;
List<String> list;
public Holder(View view, List<String> list) {
super(view);
this.list = list;
mtv = (TextView) view.findViewById(R.id.tv);
}
public void setData(int position) {
mtv.setText(list.get(position));
}
}