一个简单的demo,可以切换布局(流式布局与表格布局)
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
__________________________________
activity_xrecycler_view.xml
<?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" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.exam.asus.dierzhou.xrecyclerview.XrecyclerViewActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:textSize="20sp" android:layout_centerInParent="true" android:text="搜索商品" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/img" android:layout_margin="10dp" android:layout_alignParentRight="true" android:background="@drawable/grid_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_weight="2" android:hint="请输入关键词" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="搜索" android:layout_weight="8" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/xrecyclerview" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
_______________________________
item_recycler.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:layout_width="150dp" android:layout_height="150dp" android:id="@+id/head" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_toRightOf="@+id/head" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/title" android:text="名字" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/price1" android:text="1111" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/price" android:text="1111" android:textColor="#f60a0a" /> </LinearLayout> </LinearLayout>_______________________________________
model层
public interface IModel { void getUrl(String url, Map<String, String> mmap); }_______________
public class UserModel implements IModel { SuperClass superClass = new SuperClass(); private OnFinish onFinish; public interface OnFinish{ void onFinishListener(SuperClass superClass); } public void setOnFinish(OnFinish onFinish) { this.onFinish = onFinish; } @Override public void getUrl(String url, Map<String,String> mmap) { OkHttp3Utils.doPost(url, mmap, new GsonObjectCallback<SuperClass>() { @Override public void onUi(SuperClass superClass) { Log.d("myMain","==="+superClass.getMsg()); onFinish.onFinishListener(superClass); } @Override public void onFailed(Call call, IOException e) { onFailed(call, e); } }); } }__________________________________
presenter层
public class UserPresenter implements UserModel.OnFinish { private final IView userview; private final UserModel userModel; public UserPresenter(IView userview) { this.userview = userview; this.userModel = new UserModel(); userModel.setOnFinish(this); } public void getUrl(String url, Map<String,String> mmap){ userModel.getUrl(url,mmap); } @Override public void onFinishListener(SuperClass superClass) { userview.getData(superClass); } }___________________________________
view层
public interface IView { void getData(SuperClass superClass); }______________
public class XrecyclerViewActivity extends AppCompatActivity implements IView { UserPresenter userPresenter; XRecyclerView xRecyclerView; MyXRecyclerAdapter adapter; private ImageView imageView; private GridLayoutManager gridLayoutManager; private LinearLayoutManager linearLayoutManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xrecycler_view); xRecyclerView = (XRecyclerView)findViewById(R.id.xrecyclerview); imageView = (ImageView) findViewById(R.id.img); xRecyclerView.setLayoutManager(new LinearLayoutManager(this)); userPresenter = new UserPresenter(this); Map<String,String> mmap = new HashMap<>(); mmap.put("pscid","39"); mmap.put("page","1"); userPresenter.getUrl(API.HOST,mmap); xRecyclerView.setPullRefreshEnabled(true); xRecyclerView.setLoadingMoreEnabled(true); xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { Toast.makeText(XrecyclerViewActivity.this, "刷新", Toast.LENGTH_SHORT).show(); xRecyclerView.refreshComplete(); } @Override public void onLoadMore() { Toast.makeText(XrecyclerViewActivity.this, "加载更多", Toast.LENGTH_SHORT).show(); xRecyclerView.loadMoreComplete(); } }); imageView.setTag(1); gridLayoutManager = new GridLayoutManager(XrecyclerViewActivity.this,2); linearLayoutManager = new LinearLayoutManager(XrecyclerViewActivity.this); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int tag = (int) imageView.getTag(); if(tag==1){ imageView.setTag(2); imageView.setImageResource(R.drawable.lv_icon); xRecyclerView.setLayoutManager(gridLayoutManager); }else { imageView.setTag(1); imageView.setImageResource(R.drawable.grid_icon); xRecyclerView.setLayoutManager(linearLayoutManager); } } }); } @Override public void getData(SuperClass superClass) { adapter = new MyXRecyclerAdapter(superClass.getData(),XrecyclerViewActivity.this); xRecyclerView.setAdapter(adapter); String[] split = superClass.getData().get(0).getImages().split("\\|"); } }____________________________
adapter
public class MyXRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private List<SuperClass.DataBean> list; Context context; public MyXRecyclerAdapter(List<SuperClass.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_recycler,null); MyRecyclerViewHolder holder = new MyRecyclerViewHolder(view); return holder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { SuperClass.DataBean dataBean = list.get(position); String[] split1 = dataBean.getImages().split("\\|"); ImageLoader.getInstance().displayImage(split1[0],((MyRecyclerViewHolder)holder).head); ((MyRecyclerViewHolder)holder).title.setText(dataBean.getTitle()); ((MyRecyclerViewHolder)holder).price.setText("折扣价:¥"+dataBean.getPrice()+""); ((MyRecyclerViewHolder)holder).price1.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG ); //中间横线(删除线) ((MyRecyclerViewHolder) holder).price1.setText("原价是:¥"+dataBean.getBargainPrice()); } @Override public int getItemCount() { return list.size(); } class MyRecyclerViewHolder extends RecyclerView.ViewHolder{ ImageView head; TextView title,price,price1; public MyRecyclerViewHolder(View itemView) { super(itemView); head = itemView.findViewById(R.id.head); title = itemView.findViewById(R.id.title); price = itemView.findViewById(R.id.price); price1 = itemView.findViewById(R.id.price1); } } }