RecycleView的基本配置和使用方法(四)---RecycleView实现简单demo
来源:互联网 发布:传奇清除所有玩家数据 编辑:程序博客网 时间:2024/05/16 17:13
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)); }}@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder = new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.recyclerview_item, parent, false)); return holder;}@Overridepublic 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.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (itemClickListener != null) { itemClickListener.onItemSubViewClick(holder.textView, position); } } });}@Overridepublic 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;@Overrideprotected 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); }}@Overridepublic 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; }}}
1 0
- RecycleView的基本配置和使用方法(四)---RecycleView实现简单demo
- RecycleView的基本配置和使用方法(一)---初识RecycleView
- RecycleView的基本配置和使用方法(三)---RecycleView中 item的事件处理
- RecycleView的基本配置和使用方法(二)---RecycleView实践应用
- RecycleView的基本配置和使用方法(五)--总结
- RecycleView的基本使用方法
- Recycleview的基本使用方法
- RecycleView的简单实现
- RecycleView的使用方法
- RecycleView的基本用法
- RecycleView的基本用法
- Android RecycleView---- RecycleView的简单使用
- recycleview多item布局的实现(简单聊天界面)
- 使用recycleview实现简单的柱状图
- recycleView简单实现listview的效果
- RecycleView的简单使用
- RecycleView 的简单使用
- RecycleView的简单应用
- mac 下安装golang
- pig初探
- 上传excel文件到服务器
- 合并两个有序数据 (百度外卖、新浪面试题)
- Java 基础之MySQL连接
- RecycleView的基本配置和使用方法(四)---RecycleView实现简单demo
- 搜集整理一些Cron表达式例子
- android正则表达式及Pattern Matcher使用
- centos7安装JDK1.8
- mysqldump 导出数据库报错 “does not exist when using LOCK TABLES”
- equals方法的重写代码实例
- 【原创】php无框架webuploader上传图片以base64形式保存到数据库
- fgetc,fgets,getline用法
- 单例设计模式