加依赖android
compile 'com.android.support:recyclerview-v7:26.0.+'
compile 'org.greenrobot:eventbus:3.0.0'
compile 'com.facebook.fresco:fresco:1.5.0'
写权限
<uses-permission android:name="android.permission.INTERNET"/>
要想用fresco加载图片必须在manifest 的application中加入android:name
MyApp类
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
//初始化Fresco
Fresco.initialize(this);
}
MessageEvent类
//建立消息类
public class MessageEvent {
String name;
public MessageEvent(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
MyAdapter类
//设置适配器并加入点击事件
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private MyItemClickListener mItemClickListener;
private Context mContext;
private List<String> mList;
public MyAdapter(MainActivity mainActivity, List<String> list) {
this.mContext = mainActivity;
this.mList = list;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(mContext, R.layout.item, null);
//将全局的监听传递给holder
ViewHolder holder = new ViewHolder(view, mItemClickListener);
return holder;
}
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
//给空间赋值
holder.tv.setText(mList.get(position));
holder.sdv.setImageURI("http://p0.so.qhimgs1.com/t017746110f02d2c3bc.jpg");
}
@Override
public int getItemCount() {
return mList.size();
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private MyItemClickListener mListener;
private SimpleDraweeView sdv;
private TextView tv;
public ViewHolder(View itemView, MyItemClickListener myItemClickListener) {
super(itemView);
//将全局的监听赋值给接口
this.mListener = myItemClickListener;
itemView.setOnClickListener(this);
sdv=itemView.findViewById(R.id.sdv);
tv=itemView.findViewById(R.id.tv);
}
/**
* 实现OnClickListener接口重写的方法
* @param v
*/
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onItemClick(v, getPosition());
}
}
}
/**
* 建立一个回调接口
*/
public interface MyItemClickListener {
void onItemClick(View view, int position);
}
/**
* 在activity里面adapter就是调用的这个方法,将点击事件监听传递过来,并赋值给全局的监听
*
* @param myItemClickListener
*/
public void setItemClickListener(MyItemClickListener myItemClickListener) {
this.mItemClickListener = myItemClickListener;
}
}
MainActivity类
//显示RecyclerView界面 并用EventBus发送消息
public class MainActivity extends AppCompatActivity {
private RecyclerView rcv;
private MyAdapter mAdapter;
private List<String> list=new ArrayList<>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
rcv= (RecyclerView) findViewById(R.id.rcv);
for (int i=0;i<10;i++){
list.add("ajugduyagd");
}
mAdapter=new MyAdapter(MainActivity.this,list);
LinearLayoutManager manager=new LinearLayoutManager(this);
rcv.setLayoutManager(manager);
rcv.setAdapter(mAdapter);
mAdapter.setItemClickListener(new MyAdapter.MyItemClickListener() {
@Override
public void onItemClick(View view, int position) {
EventBus.getDefault().post(new MessageEvent("我就日了"));
startActivity(new Intent(MainActivity.this,MainActivity2.class));
Toast.makeText(MainActivity.this, "点击了" + position, Toast.LENGTH_SHORT).show();
}
});
}
}
MainActivity2类
//接受MainActivity发送的消息并显示
public class MainActivity2 extends AppCompatActivity{ private TextView tv; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv= (TextView) findViewById(R.id.tv); EventBus.getDefault().register(this); } @Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(MessageEvent event){ tv.setText(event.getName()); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); }}