- RecyclerView的添加依赖文件
- RecyclerView的常规使用方法
- RecyclerView的点击监听写法
.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent">
.support.v7.widget.RecyclerView>
//绑定View
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
//新建适配器
listAdapter = new DrawerListAdapter(list);
//设置布局管理(可以实现ListView,GirdView,瀑布流等效果)
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
//绑定适配器
recyclerView.setAdapter(listAdapter);
package com.example.zx.samle_bar;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.Toast;
import com.example.zx.samle_bar.Adapter.DrawerListAdapter;
import com.example.zx.samle_bar.Bean.DrawerContext;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List list;
private DrawerListAdapter listAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
list = new ArrayList<>();
initData();
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(listAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main,menu);
return super.onCreateOptionsMenu(menu);
}
private void initData(){
int[] imgs = {R.drawable.settings,
R.drawable.helpcircle,
R.drawable.sharevariant,
R.drawable.wikipedia};
String[] names={"设置","帮助","分享","维基百科"};
for(int i = 0;i < 4;i ++){
DrawerContext context = new DrawerContext(imgs[i],names[i]);
list.add(context);
}
}
}
package com.example.zx.samle_bar.Adapter;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.example.zx.samle_bar.Bean.DrawerContext;
import com.example.zx.samle_bar.Interface.MyItemClickListener;
import com.example.zx.samle_bar.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by zx on 2017-03-12.
*/
public class DrawerListAdapter extends RecyclerView.Adapter {
private List drawerList;
private MyItemClickListener listener;
public DrawerListAdapter(List list){
this.drawerList = list;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_drawer_list,parent,false);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
view.setLayoutParams(lp);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
DrawerContext context = drawerList.get(position);
((MyViewHolder)holder).img.setImageResource(context.getImg());
((MyViewHolder)holder).tv.setText(context.getName());
((MyViewHolder)holder).itemView.setTag(position);
}
@Override
public int getItemCount() {
return drawerList.size();
}
public void setOnItemClickListener(MyItemClickListener listener){
this.listener = listener;
}
class MyViewHolder extends RecyclerView.ViewHolder{
public ImageView img;
public TextView tv;
public MyViewHolder(View view) {
super(view);
img = (ImageView) view.findViewById(R.id.icon);
tv = (TextView) view.findViewById(R.id.name);
}
}
}
package com.example.zx.samle_bar.Bean;
/**
* Created by zx on 2017-03-12.
*/
public class DrawerContext {
private int img;
private String name;
public DrawerContext() {
}
public DrawerContext(int img, String name) {
this.img = img;
this.name = name;
}
public int getImg() {
return img;
}
public void setImg(int img) {
this.img = img;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
由于RecyclerView并现ClickListener的监听!
因此需要自己写一个回调来实现对点击事件的监听
步骤如下:
package com.example.zx.samle_bar.Interface;
import android.view.View;
/**
* Created by zx on 2017-03-12.
*/
public interface MyItemClickListener {
void onItemClick(View view,int position);
}
private MyItemClickListener listener;
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (listener == null){
listener.onItemClick(view,(int)view.getTag());
}
}
});
drawerListAdapter.setOnItemClickListener(new MyItemClickListener() {
@Override
public void onItemClick(View view, int postion) {
Intent intent = new Intent(getApplicationContext(), SlideMenuActivity.class);
intent.putExtra("itemId", postion);
startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
}
});
如果对回调函数有什么不明白的地方参见csdn大神的博客
http://blog.csdn.net/xiaanming/article/details/8703708/