6 android android-viewholder android-5.0-lollipop android-recyclerview
本RecyclerView.ViewHolder类有一个字段是public final View itemView.它表示该onBindViewHolder方法应更新其内容itemView以反映给定位置的项目.final修饰符是否表示此字段的值不能更改?
以下代码来自教科书:
public class ViewHolder extends RecyclerView.ViewHolder {
...
@Override
public int getItemCount() {
...
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
...
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这里的这些方法可以覆盖RecyclerView.Adapter从RecyclerView.ViewHolder类派生的类中的方法?
https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html
https://developer.android.com/reference/android/support/v7/widget/RecyclerView.ViewHolder.html
有人可以解释一下吗?
谢谢.
xia*_*omi 10
最终修饰符是否表示此字段的值不能更改?
View上的最终修饰符表示您只能启动视图一次(通过创建新的View(上下文)或从xml文件中扩展视图).但您仍然可以修改视图属性.(即您的视图包含TextView,您可以设置文本)
对于您的第二个问题,教科书对于如何使用视图持有者实现适配器并不十分精确.这是一个带有自定义视图持有者的适配器的简单实现.
public class Adapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{
private List<String> titles;
public Adapter(List<String> titles) {
this.titles = titles;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
return new MyViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_view, viewGroup, false));
}
@Override
public void onBindViewHolder(MyViewHolder myViewHolder, int i) {
String title = titles.get(i);
myViewHolder.title.setText(title);
}
@Override
public int getItemCount() {
return titles.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView title;
public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.title_TV);
}
}
}
Run Code Online (Sandbox Code Playgroud)
和它的xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:id="@+id/title_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
您可以看到,如果扩展RecyclerView.Adapter,则必须覆盖这3种方法.
希望这将有助于您了解更多RecyclerView.
| 归档时间: |
|
| 查看次数: |
19406 次 |
| 最近记录: |