加依賴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); }}