目录:android.support.v7.widget.RecyclerView
xml布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
代码使用:
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
// 设置布局管理器
mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(mLayoutManager);
// 设置adapter
mRecyclerView.setAdapter(mAdapter = new RvAdapter(getData()));
}
private List<String> getData() {
List<String> data = new ArrayList<>();
String temp = " item";
for(int i = 0; i < 20; i++) {
data.add(i + temp);
}
return data;
}
}
使用的适配器:
public class RvAdapter extends RecyclerView.Adapter<RvAdapter.ViewHolder>{
private List<String> mData;
public RvAdapter(List<String> data) {
this.mData = data;
}
public void updateData(List<String> data) {
this.mData = data;
notifyDataSetChanged();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_icon_text, parent, false));
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.processData(position);
}
@Override
public int getItemCount() {
return mData == null ? 0 : mData.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView tv_title;
public ViewHolder(View itemView) {
super(itemView);
tv_title = (TextView) itemView.findViewById(R.id.tv_title);
}
private void processData(int position) {
tv_title.setText(mData.get(position));
}
}
}