RecyclerView

mode    http包

public interface HttpCallback {



    void onSuccess(DataBeans dataBeans);


    void onFail(int errCode, String errMsg);

}

-------------------------------------

public class HttpUntils implements Callback {

    private static HttpUntils INSTANCE;

    public static HttpUntils getInsatance() {
        if (INSTANCE == null) {
            INSTANCE = new HttpUntils();
        }
        return INSTANCE;
    }

    private HttpCallback mhttpCallback;

    public String doPost(String path, HttpCallback httpCallback) {
        this.mhttpCallback = httpCallback;
        OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
        FormBody formBody = new FormBody.Builder().build();

        Request request = new Request.Builder()
                .url(path)
                .post(formBody)
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(this);
        return "";
    }


    @Override
    public void onFailure(Call call, IOException e) {
   }


    @Override
    public void onResponse(Call call, Response response) throws IOException {
        String string = response.body().string();
        //Log.e("Message", string + "=====");
        Gson gson = new GsonBuilder().create();
        DataBeans dataBeans = gson.fromJson(string, DataBeans.class);
        // Log.e("my", dataBeans.getData().get(0).getNews_title() + "=====");
        mhttpCallback.onSuccess(dataBeans);
}

}

----------------------------------

presenter包

public class BasePresenter<V extends IBaseView> {


    private V iBaseView;


    public void attachView(V iBaseView) {
        this.iBaseView = iBaseView;
    }




    public V getView() {
        return iBaseView;
    }


    public void detachView(V iBaseView) {
        this.iBaseView = null;//避免内存泄漏
    }


}

---------------------------

public class MainPresenter extends BasePresenter<IMainView> {

    private final HttpUntils httpUntils;

    public MainPresenter() {
        httpUntils = HttpUntils.getInsatance();
    }
    public void loadDataFromServer(String path) {
        httpUntils.doPost(path, new HttpCallback() {
            @Override
            public void onSuccess(DataBeans dataBeans) {
                Log.e("myMessage===", dataBeans.getData().get(0).getNews_summary() + "");
                getView().onSuccess(dataBeans);
            }
            @Override
            public void onFail(int errCode, String errMsg) {
            }
        });
    }

}

------------------------------------

View包  Activity
public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity implements IBaseView {



    public P basePresenter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_base);


        initView();
        initBaseView();
        initData();


    }


    private void initBaseView() {
        basePresenter = setPresenter();
        if (basePresenter != null) {
            basePresenter.attachView(this);
        } else {
            try {
                throw new Exception("出错了");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }


    }


    protected abstract P setPresenter();


    protected abstract void initData();


    protected abstract void initView();

}

------------------------------------

public class MainActivity extends BaseActivity<MainPresenter> implements IMainView, SwipeRefreshLayout.OnRefreshListener {



    private RecyclerView recycler;
    private RecyclerAdapter recyclerAdapter;
    List<DataBeans.DataBean> list = new ArrayList<DataBeans.DataBean>();
    private SwipeRefreshLayout swipe;


    @Override
    protected void onCreate(Bundle savedInstanceState) {


        setContentView(R.layout.activity_main);
        super.onCreate(savedInstanceState);


    }


    @Override
    protected MainPresenter setPresenter() {
        return new MainPresenter();
    }




    @Override
    protected void initView() {
        recycler = findViewById(R.id.recycler);
        //设置布局管理
        recycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
        swipe = findViewById(R.id.swipe);
        //设置颜色
        
        //swipe监听
        swipe.setOnRefreshListener(this);
    }




    @Override
    protected void onDestroy() {
        super.onDestroy();
        basePresenter.detachView(this);
    }


    @Override
    public void onSuccess(DataBeans s) {
        Log.e("myMessage", "AAAAAA" + s.getData().get(0).getNews_title());
        List<DataBeans.DataBean> data = s.getData();
        list.addAll(data);
        recyclerAdapter = new RecyclerAdapter(this, list);
        recycler.setAdapter(recyclerAdapter);
        recyclerAdapter.notifyDataSetChanged();
    }


    @Override
    protected void initData() {
        String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
        basePresenter.loadDataFromServer(path);


    }


    @Override
    public void onRefresh() {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                swipe.setRefreshing(false);//停止刷新
            }
        }, 2000);
    }

}

-----------------------------------

adapter页面

public class RecyclerAdapter extends RecyclerView.Adapter {



    private Context context;
    private List<DataBeans.DataBean> listAll;


    public RecyclerAdapter(Context context, List<DataBeans.DataBean> listAll) {
        this.context = context;
        this.listAll = listAll;
    }


    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.item_layout, null);
        return new MyHolderView(view);
    }


    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        MyHolderView viewHolder = (MyHolderView) holder;
        viewHolder.name.setText(listAll.get(position).getNews_title());
    }


    @Override
    public int getItemCount() {
        return listAll.size();
    }


    private class MyHolderView extends RecyclerView.ViewHolder {
        private TextView name;


        public MyHolderView(View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.name);
        }
    }

}

-----------------------------

interf包
public interface IBaseView {



}

--------------------------------

public interface IMainView extends IBaseView {



    void onSuccess(DataBeans s);
}

猜你喜欢

转载自blog.csdn.net/zyanna/article/details/80043242