第一周模拟题

依赖

implementation 'com.facebook.fresco:fresco:1.10.0'
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.android.support:recyclerview-v7:28.0.0-beta01'
implementation 'org.greenrobot:eventbus:3.0.0'
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

添加Ok封装

 

 

activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dianji"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/aaa"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/main_tv"
        android:textSize="40sp"
        android:text="Good Morning"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#21c951"
        android:layout_marginTop="50dp"/>

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/main_simple"
        android:layout_marginTop="30dp"
        android:layout_gravity="center"
        android:src="@drawable/ic_launcher_background"
        app:roundAsCircle="true"
        app:actualImageScaleType="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

 

MainActivity 
public class MainActivity extends AppCompatActivity {

    @BindView(R.id.main_tv)
    TextView mainTv;
    @BindView(R.id.main_simple)
    SimpleDraweeView mainSimple;
    @BindView(R.id.dianji)
    LinearLayout dianji;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        EventBus.getDefault().register(this);
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void Event(MessageEvent messageEvent) {
        mainTv.setText(messageEvent.getMessage());
        mainSimple.setImageURI(messageEvent.getPic());
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }

    @OnClick(R.id.dianji)
    public void onViewClicked() {
        startActivity(new Intent(MainActivity.this, ShowActivity.class));

    }
}

activity_show

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".view.ShowActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</LinearLayout>
ShowActivity 
public class ShowActivity extends AppCompatActivity implements Iview {

    @BindView(R.id.recyclerview)
    RecyclerView recyclerview;
    private List<DrawableBean.ResultsBean> mResults;
    private Presenter mPresenter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);
        ButterKnife.bind(this);
        recyclerview.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
        recyclerview.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        mPresenter = new Presenter(this);
        mPresenter.getdatas();
    }
    @Override
    public void viewSuccess(DrawableBean drawableBean) {
        mResults = drawableBean.getResults();
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                RecyclerAdapter recyclerAdapter = new RecyclerAdapter(ShowActivity.this, mResults);
                recyclerview.setAdapter(recyclerAdapter);
                recyclerAdapter.setItemClick(new RecyclerAdapter.ItemClick() {
                    @Override
                    public void item(String url, TextView title) {
                        Toast.makeText(ShowActivity.this, "厉害了", Toast.LENGTH_SHORT).show();
                        String s = title.getText().toString();
                        EventBus.getDefault().post(new MessageEvent(s,url));
                          finish();
                    }
                });
            }
        });
    }

    @Override
    public void viewFail(int code) {

    }
}

 

View Iview 接口 
public interface Iview {
    void viewSuccess(DrawableBean drawableBean);

    void viewFail(int code);
}

 

MyApp 
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

 

model Imodel 接口

public interface Imodel {
    void modelSuccess(DrawableBean drawableBean);

    void modelFail(int code);

}

model Model

public class Model {
    private static final String TAG = "Model";
    public void getdata(final Imodel imodel){
        OkHttpUtils.doGet("http://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1", new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.i(TAG, "model:网络请求失败 ");
                imodel.modelFail(1);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.i(TAG, "model:网络请求成功 ");
                String json = response.body().string();
                DrawableBean drawableBean = new Gson().fromJson(json, DrawableBean.class);
                imodel.modelSuccess(drawableBean);
            }
        });
    }
}

 

presenter Ipresenter 接口

public interface Ipresenter {
    void onDestroys();
}

presenter Presenter

 

public class Presenter implements Ipresenter {
    private Iview mIview;
    private Model mModel;

    public Presenter(Iview iview) {
        mIview = iview;
        mModel = new Model();
    }

    public void getdatas(){
        mModel.getdata(new Imodel() {
            @Override
            public void modelSuccess(DrawableBean drawableBean) {
                mIview.viewSuccess(drawableBean);
            }

            @Override
            public void modelFail(int code) {
                mIview.viewFail(code);
            }
        });
    }
    @Override
    public void onDestroys() {
        if (mIview != null){
            mIview = null;
        }
    }
}

holder RecyclerHolder

public class RecyclerHolder extends RecyclerView.ViewHolder {
    public SimpleDraweeView item_simple;
    public TextView item_title;
    public RecyclerHolder(@NonNull View itemView) {
        super(itemView);
        item_simple = itemView.findViewById(R.id.item_simple);
        item_title = itemView.findViewById(R.id.item_title);
    }
}

adapter RecyclerAdapter

 

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerHolder> {
    private Context mContext;
    private List<DrawableBean.ResultsBean> mResults;

    public RecyclerAdapter(Context context, List<DrawableBean.ResultsBean> results) {
        mContext = context;
        mResults = results;
    }

    private View mView;

    @NonNull
    @Override
    public RecyclerHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        mView = LayoutInflater.from(mContext).inflate(R.layout.item_show, null);
        return new RecyclerHolder(mView);
    }

    @Override
    public void onBindViewHolder(@NonNull final RecyclerHolder recyclerHolder, final int i) {
        String who = mResults.get(i).getWho();
        String url = mResults.get(i).getUrl();
        recyclerHolder.item_simple.setImageURI(url);
        recyclerHolder.item_title.setText(who);
        recyclerHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mItemClick.item(mResults.get(i).getUrl(),recyclerHolder.item_title);
            }
        });
    }

    @Override
    public int getItemCount() {
        return mResults.size();
    }
    private ItemClick mItemClick;

    public void setItemClick(ItemClick itemClick) {
        mItemClick = itemClick;
    }

    public interface ItemClick  {
        void item(String url, TextView title);
    }
}

bean MessageEvent

public class MessageEvent {
    private String message;
    private String pic;

    public MessageEvent(String message, String pic) {
        this.message = message;
        this.pic = pic;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public void setPic(String pic) {
        this.pic = pic;
    }


    public String getPic() {

        return pic;
    }
}

item_show

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:padding="10dp"
    android:layout_height="match_parent">
    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/item_simple"
        android:src="@drawable/ic_launcher_background"
        app:roundAsCircle="true"
        app:actualImageScaleType="centerCrop"
        android:layout_width="150dp"
        android:layout_height="150dp" />
    <TextView
        android:id="@+id/item_title"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="50dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值