RecyclerView 出来已经挺久了,今天下午刚接触一下。
RecyclerView已经逐步取代lsitView,别的不多说,上代码:
我们使用的开发工具是Android Studio。
想要使用RecyclerView,首先我们要在build.gradle中添加:
dependencies { compile fileTree(dir: ‘libs‘, include: [‘*.jar‘]) testCompile ‘junit:junit:4.12‘ compile ‘com.android.support:appcompat-v7:23.2.1‘ compile ‘com.android.support:design:23.2.1‘ /*使用RecyclerView*/ compile ‘com.android.support:recyclerview-v7:23.0.1‘ compile ‘com.google.android.gms:play-services-appindexing:8.1.0‘} XML中的代码:
<android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content"> </android.support.v7.widget.RecyclerView> JAVA代码:
public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private List<String> datas = new ArrayList<>(); private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到控件 recyclerView = (RecyclerView) findViewById(R.id.recyclerView); adapter = new MyAdapter(datas); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(this)); //设置分割线 recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST)); //GridVIew与listVIew自由切换 // recyclerView.setLayoutManager( new GridLayoutManager(this,4)); //瀑布流 // recyclerView.setLayoutManager( new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.HORIZONTAL)); initDatas(); adapter.setOnClickListener(new MyAdapter.OnTestClickListener() { @Override public void OnCcc(View v, int position, String city) { Toast.makeText(MainActivity.this, city, Toast.LENGTH_SHORT).show(); } }); } private void initDatas() { datas.add("山东"); datas.add("上海"); datas.add("北京"); datas.add("河南"); datas.add("古巴"); datas.add("莱阳"); datas.add("烟台"); datas.add("青岛"); datas.add("济南"); datas.add("菏泽"); datas.add("淄博"); datas.add("莱西"); datas.add("栖霞"); datas.add("桃村"); datas.add("鱼台"); datas.add("青州"); datas.add("台东"); datas.add("高新"); datas.add("长清"); datas.add("即墨"); datas.add("姜疃"); datas.add("穴坊"); datas.add("乔家泊"); datas.add("聊城"); datas.add("菏泽"); datas.add("哈尔滨"); datas.add("齐齐哈尔"); datas.add("美国"); datas.add("中国"); datas.add("伊拉克"); }}
Adapter:
//继承RecyclerView.Adapter<>,泛型必须是ViewHolderpublic class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mDatas; private LayoutInflater inflater; private OnTestClickListener listener; public void setOnClickListener(OnTestClickListener listener){ this.listener = listener; } //创建一个构造方法,把数据源传递进来 public MyAdapter(List<String> datas) { mDatas = datas; } //添加数据 public void addData(int position,String city){ mDatas.add(position,city); notifyItemInserted(position); } //删除数据 public void deleteData(int position){ mDatas.remove(position); notifyItemRemoved(position); } //创建一个ViewHolder,相当于以前个getView方法; @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { inflater = LayoutInflater.from(parent.getContext()); View view = inflater.inflate(R.layout.the_item, parent, false); return new ViewHolder(view); } //相当于以前在getView方法中绑定数据 @Override public void onBindViewHolder(ViewHolder holder, int position) { //把数据和View进行绑定 holder.textView.setText(mDatas.get(position)); } @Override public int getItemCount() { return mDatas.size(); } // ViewHolder必须继承RecyclerView.ViewHolder class ViewHolder extends RecyclerView.ViewHolder { private TextView textView; public ViewHolder(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.textView); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(listener != null){ listener.OnCcc(view,getLayoutPosition(),mDatas.get(getLayoutPosition())); } } }); } } //RecyclerView 的监听事件完全交给开发者; interface OnTestClickListener{ //自定义我们需要的参数; void OnCcc(View v, int position ,String city); } }
时间: 2024-08-03 23:42:26