TOActivity
public class TwoActivity extends AppCompatActivity implements TwoView {
private RecyclerView recycle;
private Button btn4;
private Button btn5;
private TextView text0;
private ImageView mimageView;
private TwoPresent twoPresent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
recycle = findViewById(R.id.recycle);
btn4 = findViewById(R.id.btn4);
btn5 = findViewById(R.id.btn5);
text0 = findViewById(R.id.text0);
Intent intent = getIntent();
String iconurl = intent.getStringExtra("iconurl");
String name = intent.getStringExtra("name");
text0.setText(name);
mimageView = findViewById(R.id.image);
mimageView.setVisibility(View.VISIBLE);
Picasso.with(TwoActivity.this).load(iconurl).into(mimageView);
twoPresent = new TwoPresent(this);
twoPresent.two(UrlUtil.Gong);
layout(false, true);
}
@Override
public void onSuccess(String result) {
Toast.makeText(TwoActivity.this, "成功了", Toast.LENGTH_LONG).show();
}
@Override
public void onFailer(String msg) {
Toast.makeText(TwoActivity.this, "失败了", Toast.LENGTH_LONG).show();
}
@Override
public void onGetData(final List<LoginUser.ResultsBean> list) {
runOnUiThread(new Runnable() {
@Override
public void run() {
final TwoAdapter adapter = new TwoAdapter(getApplicationContext(), list);
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
recycle.setLayoutManager(staggeredGridLayoutManager);
recycle.setAdapter(adapter);
adapter.setClick(new TwoAdapter.RecycleitemClick() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(TwoActivity.this, position + "", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(TwoActivity.this, ThreeActivity.class);
intent.putExtra("image", list.get(position).getUrl());
startActivity(intent);
}
});
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
adapter.addData(0);
}
});
btn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (list.size() > 1) {
adapter.removeData(0);
} else {
Toast.makeText(getApplication(), "没有数据", Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
public void layout(boolean a, boolean b) {
}
}
TwoView
public interface TwoView {
void onSuccess(String result);
void onFailer(String msg);
void onGetData(List<LoginUser.ResultsBean> list);
}
UrlUtil
public interface UrlUtil {
public String Gong = "https://gank.io/api/data/福利/10/2";
}
TwoPresent
public class TwoPresent {
private TwoView mtwoView;
private List<LoginUser.ResultsBean> mlist;
private ToModel mtoModel;
public TwoPresent(TwoView mtwoView) {
this.mtwoView = mtwoView;
mtoModel = new ToModel();
}
public void two(String path) {
mtoModel.two(path, new OkHttp.HttpCallback() {
@Override
public void setData(String s) {
}
@Override
public void getData(List<LoginUser.ResultsBean> list) {
mlist = list;
mtwoView.onGetData(list);
}
});
}
}
ToModel
public class ToModel {
public void two(String path, final OkHttp.HttpCallback callback){
OkHttp okHttp = new OkHttp();
okHttp.liu(path, new OkHttp.HttpCallback() {
@Override
public void setData(String s) {
Gson gson = new Gson();
LoginUser user = gson.fromJson(s, LoginUser.class);
List<LoginUser.ResultsBean> results = user.getResults();
callback.getData(results);
}
@Override
public void getData(List<LoginUser.ResultsBean> list) {
}
});
}
}
okhttp
public class OkHttp {
public void liu(String url, final HttpCallback callback) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.get()
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
int code = response.code();
if (code == 200) {
ResponseBody body = response.body();
String string = body.string();
callback.setData(string);
}
}
});
}
public interface HttpCallback {
void setData(String s);
void getData(List<LoginUser.ResultsBean> list);
}
}
Adapter(recyclerView)
public class TwoAdapter extends RecyclerView.Adapter<TwoAdapter.MyViewHolder>{
private Context mcontext;
private List<LoginUser.ResultsBean> list;
private RecycleitemClick click;
public void setClick(RecycleitemClick click) {
this.click = click;
}
public TwoAdapter(Context context, List<LoginUser.ResultsBean> list) {
this.mcontext=context;
this.list=list;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=LayoutInflater.from(mcontext).inflate(R.layout.item,viewGroup,false);
MyViewHolder holder = new MyViewHolder(view, click);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int i) {
LoginUser.ResultsBean bean = list.get(i);
Picasso.with(mcontext).load(bean.getUrl()).into(holder.image9);
}
@Override
public int getItemCount() {
return list==null?0:list.size();
}
public interface RecycleitemClick{
void onItemClick(View view,int position);
}
public void addData(int position){
list.add(0,list.get(position));
notifyItemInserted(position);
}
public void removeData(int positoin){
list.remove(0);
notifyItemRemoved(positoin);
notifyDataSetChanged();
}
class MyViewHolder extends RecyclerView.ViewHolder{
ImageView image9;
public MyViewHolder(View itemView,final RecycleitemClick click) {
super(itemView);
image9 = itemView.findViewById(R.id.image9);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
click.onItemClick(view,getAdapterPosition());
}
});
}
}
}