[置顶] RecycleView的基本配置和使用方法(四)---RecycleView实现简单demo
2016-12-12 14:10
609 查看
recycleView实现的简单效果的代码
这是activity_main 的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="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/addItem" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="增加Item" /> <Button android:id="@+id/removeItem" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="删除Item" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/change_listView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="切换ListView" /> <Button android:id="@+id/change_gridView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="切换GridView" /> <Button android:id="@+id/change_waterfall" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="切换瀑布流" /> </LinearLayout> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView_demo" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </LinearLayout>
这是item的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="wrap_content" android:background="#44ff0000" android:orientation="vertical"> <TextView android:id="@+id/id_num" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="1" /> </LinearLayout>
这是RecyclerView的适配器
import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.recycleview.Interfaces.ItemClickListener; import com.example.recycleview.R; import java.util.ArrayList; import java.util.List; /** * Created zhangyunhao on 2016/12/12. * 设置RecyclerView的适配器 */ public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> { private List<String> list; private Context context; private List<Integer> height; private ItemClickListener itemClickListener; public HomeAdapter(Context context, List<String> list) { this.context = context; this.list = list; getRandomHeight(this.list); } public void setItemClickListener(ItemClickListener itemClickListener) { this.itemClickListener = itemClickListener; } /** * 得到随机的Item的高度 */ private void getRandomHeight(List<String> list) { height = new ArrayList<>(); for (int i = 0; i < list.size(); ++i) { height.add((int) (200 + Math.random() * 400)); } } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder = new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.recyclerview_item, parent, false)); return holder; } @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { /** * 得到item的LayoutParams布局参数 */ ViewGroup.LayoutParams params = holder.itemView.getLayoutParams(); params.height = height.get(position);//把随机的高度赋予item布局 holder.itemView.setLayoutParams(params);//把params设置item布局 holder.textView.setText(list.get(position));//为控件绑定数据 //为TextView添加监听回调 holder.textView.se bbc1 tOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (itemClickListener != null) { itemClickListener.onItemSubViewClick(holder.textView, position); } } }); } @Override public int getItemCount() { return list.size(); } class MyViewHolder extends RecyclerView.ViewHolder { TextView textView; public MyViewHolder(final View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.id_num); //为item添加普通点击回调 itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (itemClickListener != null) { itemClickListener.onItemClick(itemView, getPosition()); } } }); //为item添加长按回调 itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if (itemClickListener != null) { itemClickListener.onItemLongClick(itemView, getPosition()); } return true; } }); } } public void addItem(int position) { list.add(position,"A"); notifyItemInserted(position); } public void removeItem(int position) { list.remove(position); notifyItemRemoved(position); } }
这是MainActivity
import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.os.Bundle; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.example.recycleview.Adapters.HomeAdapter; import com.example.recycleview.Interfaces.ItemClickListener; import com.example.recycleview.R; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private RecyclerView recyclerView; private List<String> list; private HomeAdapter homeAdapter; private Button addItem; private Button removeItem; private Button change_listView; private Button change_gridView; private Button change_waterfall; private boolean isFirstView = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(); initData(); recyclerView = (RecyclerView) findViewById(R.id.recyclerView_demo); recyclerView.setItemAnimator(new DefaultItemAnimator()); homeAdapter = new HomeAdapter(this, list); recyclerView.setAdapter(homeAdapter); homeAdapter.setItemClickListener(new ItemClickListener() { @Override public void onItemClick(View view, int position) { Toast.makeText(MainActivity.this, "点击了Item" + position, Toast.LENGTH_SHORT).show(); } @Override public void onItemLongClick(View view, int position) { Toast.makeText(MainActivity.this, "长按了Item" + position, Toast.LENGTH_SHORT).show(); } @Override public void onItemSubViewClick(View view, int position) { } }); } public void findViewById() { addItem = (Button) findViewById(R.id.addItem); removeItem = (Button) findViewById(R.id.removeItem); change_listView = (Button) findViewById(R.id.change_listView); change_gridView = (Button) findViewById(R.id.change_gridView); change_waterfall = (Button) findViewById(R.id.change_waterfall); addItem.setOnClickListener(this); removeItem.setOnClickListener(this); change_listView.setOnClickListener(this); change_gridView.setOnClickListener(this); change_waterfall.setOnClickListener(this); } private void initData() { list = new ArrayList<>(); for (int i = 'A'; i <= 'Z'; ++i) { list.add("" + (char) i); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.addItem: homeAdapter.addItem(1); break; case R.id.removeItem: homeAdapter.removeItem(1); break; case R.id.change_listView: /** * ListView的效果 */ recyclerView.setLayoutManager(new LinearLayoutManager(this)); if (isFirstView) { isFirstView = false; onClick(findViewById(R.id.recyclerView_demo)); } break; case R.id.change_gridView: /** * GridView的效果 */ recyclerView.setLayoutManager(new GridLayoutManager(this, 2)); break; case R.id.change_waterfall: /** * 瀑布流的效果 */ recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); break; default: break; } } }
相关文章推荐
- [置顶] RecycleView的基本配置和使用方法(一)---初识RecycleView
- [置顶] RecycleView的基本配置和使用方法(三)---RecycleView中 item的事件处理
- [置顶] RecycleView的基本配置和使用方法(五)--总结
- [置顶] RecycleView的基本配置和使用方法(二)---RecycleView实践应用
- iOS UICollectionViewController基本使用方法和简单的相册实现
- Recycleview的基本使用方法
- (不推荐使用)springMVC基本配置+继承MultiActionController来实现根据参数名指定要请求的方法
- VisualSVN Server的基本配置和简单的使用方法
- 总结Unity IOC容器通过配置实现类型映射的几种基本使用方法
- SlidingMenu的配置与基本使用方法Demo
- mvp 结合recycleview,简单实现条目点击时间,轮播图bannner的基本操作
- RecycleView的基本使用方法
- Unity IOC容器通过配置实现类型映射的几种基本使用方法
- 仿微博个人主页时使用 CoordinatorLayout+AppBarLayout+viewpager(NestedScrollView和RecycleView) 实现方法: <?xml ver
- RecyclerView 使用方法总结(一):RecyclerView的基本用法,及实现ListView
- [置顶] 20151215 Hibernate学习笔记------基本的配置和使用方法
- 使用SingleTagSectionHandler实现简单配置节
- WebWork之--使用fileUpload interceptor实现文件上传[基本配置+注意事项]
- IBatisNet使用方法(一)基本配置
- FCKeditor基本配置优化修改使用方法