Skip to content

Commit

Permalink
增加整合一些列表分页通用的逻辑的view
Browse files Browse the repository at this point in the history
  • Loading branch information
wangjing committed Jun 19, 2019
1 parent 3e67f83 commit 2acbdb2
Show file tree
Hide file tree
Showing 24 changed files with 1,215 additions and 31 deletions.
29 changes: 0 additions & 29 deletions .idea/codeStyles/Project.xml

This file was deleted.

1 change: 1 addition & 0 deletions bl_demo/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".BailunBtnActivity"></activity>
<activity android:name=".listdataview.demo.view.ListDataViewActivity"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
8 changes: 7 additions & 1 deletion bl_demo/src/main/java/com/bailun/bl_demo/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import android.os.Bundle;
import android.view.View;

import com.bailun.bl_uilib.BailunButton;
import com.bailun.bl_demo.listdataview.demo.view.ListDataViewActivity;

public class MainActivity extends AppCompatActivity {

Expand All @@ -19,5 +19,11 @@ public void onClick(View v) {
startActivity(new Intent(MainActivity.this,BailunBtnActivity.class));
}
});
findViewById(R.id.btn_go_to_bailun_listdataview_demo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, ListDataViewActivity.class));
}
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.bailun.bl_demo.listdataview.demo.entitiy;

/**
* create by wangjing on 2019/6/19 0019
* description:
*/
public class TextBean {

private String content;

public TextBean(String content) {
this.content = content;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.bailun.bl_demo.listdataview.demo.interfaces;


import com.bailun.bl_demo.listdataview.demo.entitiy.TextBean;

import java.util.List;

public interface DemoMVP {
interface IView {
void showFirstData(List<TextBean> beans);
void showMoreData(List<TextBean> beans);
}
interface IPresenter {
void v2pGetFirstData();
void v2pGetMoreData();
void v2pGetDataSuccess(int pageIndex, List<TextBean> beans);
}
interface IModel {
void p2mGetDataNet(int pageIndex);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.bailun.bl_demo.listdataview.demo.model;



import com.bailun.bl_demo.listdataview.demo.entitiy.TextBean;
import com.bailun.bl_demo.listdataview.demo.interfaces.DemoMVP;

import java.util.ArrayList;
import java.util.List;

public class ImpDemoModel implements DemoMVP.IModel {
private final DemoMVP.IPresenter iPresenter;

public ImpDemoModel(DemoMVP.IPresenter iPresenter) {
this.iPresenter = iPresenter;
}

@Override
public void p2mGetDataNet(final int pageIndex) {
List<TextBean> beans = null;
switch (pageIndex){
case 1:
case 2:
case 3:
beans = new ArrayList<>();
for (int i = 0; i < 20; i ++){
beans.add(new TextBean("ListItem_" + (i + (pageIndex - 1) * 20)));
}
break;
default:
break;
}
final List<TextBean> finalBeans = beans;
new Thread(new Runnable() {
@Override
public void run() {
long l = System.currentTimeMillis();
int s = (int) (l % 200 + 200);
try {
Thread.sleep(s);
} catch (InterruptedException e) {
e.printStackTrace();
}
iPresenter.v2pGetDataSuccess(pageIndex, finalBeans);
}
}).start();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.bailun.bl_demo.listdataview.demo.presenter;



import com.bailun.bl_demo.listdataview.demo.entitiy.TextBean;
import com.bailun.bl_demo.listdataview.demo.interfaces.DemoMVP;
import com.bailun.bl_demo.listdataview.demo.model.ImpDemoModel;

import java.util.List;

public class ImpDemoPresenter implements DemoMVP.IPresenter {
private final DemoMVP.IView iView;
private final DemoMVP.IModel iModel = new ImpDemoModel(this);

private int pageIndex = 1;
public ImpDemoPresenter(DemoMVP.IView iView) {
this.iView = iView;
}

@Override
public void v2pGetFirstData() {
pageIndex = 1;
iModel.p2mGetDataNet(1);
}

@Override
public void v2pGetMoreData() {
iModel.p2mGetDataNet(pageIndex + 1);
}

@Override
public void v2pGetDataSuccess(int pageIndex, List<TextBean> beans) {
this.pageIndex = pageIndex;
if (pageIndex > 1){
iView.showMoreData(beans);
} else {
iView.showFirstData(beans);
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package com.bailun.bl_demo.listdataview.demo.view;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;


import com.bailun.bl_demo.R;
import com.bailun.bl_demo.listdataview.demo.entitiy.TextBean;
import com.bailun.bl_demo.listdataview.demo.interfaces.DemoMVP;
import com.bailun.bl_demo.listdataview.demo.presenter.ImpDemoPresenter;
import com.bailun.bl_demo.listdataview.view.DemoListDataView;
import com.bailun.bl_uilib.listdataview.OnListDataViewEventListener;

import java.util.ArrayList;
import java.util.List;

public class ListDataViewActivity extends FragmentActivity implements DemoMVP.IView, View.OnClickListener{

private final DemoMVP.IPresenter iPresenter = new ImpDemoPresenter(this);

private DemoListDataView listDataView;
private TextAdapter adapter;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_data_view);
listDataView = findViewById(R.id.ld_content);
adapter = new TextAdapter();
listDataView.setLayoutManager(new LinearLayoutManager(this));
listDataView.setAdapter(adapter);
listDataView.setListener(new OnListDataViewEventListener() {
@Override
public void onRetry() {
iPresenter.v2pGetFirstData();
}

@Override
public void onLoadMore() {
iPresenter.v2pGetMoreData();
}

@Override
public void onRefresh() {
iPresenter.v2pGetFirstData();
}
});
iPresenter.v2pGetFirstData();
findViewById(R.id.btn_empty).setOnClickListener(this);
findViewById(R.id.btn_error).setOnClickListener(this);
findViewById(R.id.btn_no_full).setOnClickListener(this);
}


@Override
public void showFirstData(final List<TextBean> beans) {
runOnUiThread(new Runnable() {
@Override
public void run() {
listDataView.setFirstData(beans);
}
});
}

@Override
public void showMoreData(final List<TextBean> beans) {
runOnUiThread(new Runnable() {
@Override
public void run() {
listDataView.addMoreData(beans);
}
});
}

@Override
public void onClick(View v) {
int id = v.getId();
switch (id){
case R.id.btn_empty:
listDataView.setFirstData(null);
break;
case R.id.btn_error:
listDataView.showError();
break;
case R.id.btn_no_full:
List<TextBean> beans = new ArrayList<>();
for (int i = 0; i < 10; i++ ){
beans.add(new TextBean("ListItem_"+i));
}
listDataView.setFirstData(beans);
break;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.bailun.bl_demo.listdataview.demo.view;

import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.bailun.bl_demo.R;
import com.bailun.bl_demo.listdataview.demo.entitiy.TextBean;
import com.bailun.bl_uilib.listdataview.ListDataAdapter;


/**
* create by wangjing on 2019/6/19 0019
* description:
*/
public class TextAdapter extends ListDataAdapter<TextAdapter.ViewHolder, TextBean> {

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.list_data_view_item_list, viewGroup, false);
return new ViewHolder(v);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.tv.setText(datas.get(i).getContent());
}

static class ViewHolder extends RecyclerView.ViewHolder{

TextView tv;

public ViewHolder(@NonNull View itemView) {
super(itemView);
tv = itemView.findViewById(R.id.tv_item);
}
}
}
Loading

0 comments on commit 2acbdb2

Please sign in to comment.