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);    }}
相關文章
相關標籤/搜索