RecyclerView跳转+EventBus传值+fresco图片加载

   加依赖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);    }}
相关文章
相关标签/搜索