您的位置:首页 > 产品设计 > UI/UE

BaseRecyclerViewAdapterHelper之BaseQuickAdapter的基础用法

2017-03-08 17:16 543 查看
一个实体类RectclerItem

public class RecyclerItem {

private String title;
   private String content;

   public RecyclerItem(String title, String content){
this.title = title;
       this.content = content;
   }

public String getTitle() {
return title;
   }

public void setTitle(String title) {
this.title = title;
   }

public String getContent() {
return content;
   }

public void setContent(String content) {
this.content = content;
   }
}


一个基类BaseRecyclerViewActivity

public abstract class BaseRecyclerViewActivity extends BaseActivity
implements SwipeRefreshLayout.OnRefreshListener {

protected TextView titleNameTv;
   protected SwipeRefreshLayout swipeRefreshLayout;
   protected RecyclerView recyclerView;

   @Override
   protected int getLayoutResId() {
return R.layout.activity_recyclerview;
   }

@Override
   protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

       titleNameTv = (TextView) findViewById(R.id.title_name_tv);
       swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
       recyclerView = (RecyclerView) findViewById(R.id.recycler_view);

       swipeRefreshLayout.setOnRefreshListener(this);
       recyclerView.setLayoutManager(new LinearLayoutManager(this));
       recyclerView.addItemDecoration(
new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
   }

@Override
   public void onRefresh() {
swipeRefreshLayout.postDelayed(new Runnable() {
@Override
           public void run() {
swipeRefreshLayout.setRefreshing(false);
               onRefreshComplete();
           }
},2000);
   }

/**
    * 获取数据
    *
    * @param count 设置要获取的数据的数量
    * @return
     */
   protected List<RecyclerItem> getListData(int count) {
if (count == 0)
return null;

       List<RecyclerItem> newDatas = new ArrayList<>();
       for (int i = 0; i < count; i++) {
if (i%3 == 0) {
newDatas.add(new RecyclerItem("悯农", "唐代诗人李绅", 0));
           }else if (i%3 == 1){
newDatas.add(new RecyclerItem("锄禾日当午,", "汗滴禾下土。", 1));
           }else if (i%3 == 2){
newDatas.add(new RecyclerItem("谁知盘中餐,  ", "粒粒皆辛苦。", 2));
           }
}

return newDatas;
   }

protected abstract void onRefreshComplete();
}


一个item(view_list_item)的视图文件和适配器QuickAdapter

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/view_list_item_ll"
   android:orientation="horizontal" android:layout_width="match_parent"
   android:padding="10dp"
   android:layout_height="wrap_content">

   <ImageView
       android:layout_width="40dp"
       android:layout_height="40dp"
       android:src="@drawable/gardenia"
       android:scaleType="centerCrop"/>

   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="40dp"
       android:orientation="vertical">

       <TextView
           android:id="@+id/list_item_title_tv"
           style="@style/TextStyle_14sp_666"
           android:layout_width="match_parent"
           android:layout_height="0dp"
           android:layout_weight="1.0"
           android:gravity="center_vertical"
           android:layout_marginLeft="10dp"
           android:textStyle="bold"
           android:text="标题1" />

       <TextView
           android:id="@+id/list_item_content_tv"
           style="@style/TextStyle_14sp_666"
           android:layout_width="match_parent"
           android:layout_height="0dp"
           android:layout_weight="1.0"
           android:singleLine="true"
           android:ellipsize="marquee"
           android:marqueeRepeatLimit="marquee_forever"
           android:gravity="center_vertical"
           android:layout_marginLeft="10dp"
           android:text="内容1" />

   </LinearLayout>

</LinearLayout>


public class QuickAdapter extends BaseQuickAdapter<RecyclerItem,BaseViewHolder> {

public QuickAdapter() {
super(R.layout.view_list_item);
   }

@Override
   protected void convert(BaseViewHolder helper, RecyclerItem item) {
helper.setText(R.id.list_item_title_tv,item.getTitle())
.setText(R.id.list_item_content_tv,item.getContent());

       helper.getView(R.id.list_item_content_tv).setSelected(true);
   }
}


实现类QuickActivity

public class QuickActivity extends BaseRecyclerViewActivity {

private QuickAdapter quickAdapter;

   @Override
   protected int getLayoutResId() {
return super.getLayoutResId();
   }

@Override
   protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

       titleNameTv.setText("BaseQuickAdapter的基础使用");

       ExtraView headerView = new ExtraView(this);
       headerView.setContent("头部,点击添加,长按删除。");
       ExtraView footerView = new ExtraView(this);
       footerView.setContent("这是我的尾部。");
       quickAdapter = new QuickAdapter();
       quickAdapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_RIGHT);

       quickAdapter.addHeaderView(headerView);
       quickAdapter.addFooterView(footerView);
       recyclerView.setAdapter(quickAdapter);

       quickAdapter.setNewData(getListData(6));

       initListener();
   }

private void initListener() {
// item点击事件,功能:显示点击位置
       recyclerView.addOnItemTouchListener(new OnItemClickListener() {
@Override
           public void onSimpleItemClick(BaseQuickAdapter adapter, View view, int position) {
ToastUtils.showShortToast(position + quickAdapter.getItem(position).getTitle());
           }
});

       // 头部视图点击事件,添加数据
       quickAdapter.getHeaderLayout().setOnClickListener(new View.OnClickListener() {
@Override
           public void onClick(View v) {
recyclerView.postDelayed(new Runnable() {
@Override
                   public void run() {
quickAdapter.addData(0,getListData(2));
                   }
},500);
           }
});

       // 头部视图长按事件,删除数据
       quickAdapter.getHeaderLayout().setOnLongClickListener(new View.OnLongClickListener() {
@Override
           public boolean onLongClick(View v) {
recyclerView.postDelayed(new Runnable() {
@Override
                   public void run() {
for (int i = 0; i < 3; i++) {
quickAdapter.remove(3);
                       }
recyclerView.scrollToPosition(0);
                   }
},500);
               return true;
           }
});

       // item长按事件,功能:删除长按item
       recyclerView.addOnItemTouchListener(new OnItemLongClickListener() {
@Override
           public void onSimpleItemLongClick(BaseQuickAdapter adapter, final View view,
                                             final int position) {
SnackbarUtils.showLongSnackbar(
view,
                       "删除了:" + quickAdapter.getItem(position).getTitle(),
                       Color.WHITE,Color.BLACK);
               recyclerView.postDelayed(new Runnable() {
@Override
                   public void run() {
quickAdapter.remove(position);
                   }
},500);
           }
});

       // 加载更多
       quickAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
@Override
           public void onLoadMoreRequested() {
recyclerView.postDelayed(new Runnable() {
@Override
                   public void run() {
quickAdapter.addData(getListData(3));
                       quickAdapter.loadMoreComplete();
                   }
},500);
           }
});
   }

@Override
   protected void onRefreshComplete() {
quickAdapter.addData(0,getListData(1));
       recyclerView.scrollToPosition(0);
   }
}


 

效果图如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息