之前接觸了RecyclerView學寫了一個簡單的demo效果就是實現美團頂部的側滑效果,今天就是隻是簡單的實現效果,不深入理解,明天深入理解RecyclerView,各種變換和操作。
MainActivity代碼:
public class MainActivity extends AppCompatActivity { private RecyclerView rv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rv = (RecyclerView) findViewById(R.id.rv); initdata(); } private void initdata() { /* 初始化數據 */ List<Integer> datas = new ArrayList<>(); for (int i = 0; i < 20; i++) { Resources rs = getResources(); datas.add(rs.getIdentifier("ic_launcher", "mipmap", getPackageName())); } /* 用來確定每一個item如何進行排列擺放 LinearLayoutManager 相當於ListView的效果 GridLayoutManager相當於GridView的效果 StaggeredGridLayoutManager 瀑布流 */ rv.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.HORIZONTAL)); rv.addItemDecoration(new RecyclerView.ItemDecoration() { @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { //outRect.left = 10; //outRect.top = 10; //outRect.top = 10; } }); rv.setAdapter(new LinearRecyclerView(this,datas)); } }
LinearRecyclerView類代碼:
public class LinearRecyclerView extends RecyclerView.Adapter<LinearRecyclerView.MyViewHolder>{ private Context context; private List<Integer> datas; public LinearRecyclerView(Context context,List<Integer>datas){ this.context=context; this.datas=datas; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View contentView =LayoutInflater.from(context).inflate(R.layout.item_layout,parent,false); MyViewHolder viewHolder=new MyViewHolder(contentView); return viewHolder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.imageView.setImageResource(datas.get(position)); holder.textView.setText("分類"+position); } @Override public int getItemCount() { return datas==null?0:datas.size(); } public class MyViewHolder extends RecyclerView.ViewHolder{ private ImageView imageView; private TextView textView; public MyViewHolder(View itemView) { super(itemView); imageView= (ImageView) itemView.findViewById(R.id.img); textView= (TextView) itemView.findViewById(R.id.tv); } } }
主佈局xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.zobject.linearrecyclerview.MainActivity"> <android.support.v7.widget.RecyclerView android:layout_height="200dp" android:layout_width="match_parent" android:id="@+id/rv" > </android.support.v7.widget.RecyclerView> </RelativeLayout>item佈局xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="70dp" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/img" android:layout_gravity="center" android:layout_width="60dp" android:layout_height="75dp" > </ImageView>> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:textColor="#000000" android:text="nicaicai" > </TextView>
</LinearLayout>
代碼沒什麼說的都是基本的模版代碼,方便以後查看,下面是效果圖: