RecyclerView(滚动控件)的用法
1.首先在build.gradle中添加依賴庫
compile 'com.android.support:recyclerview-v7:24.2.1'
2.修改activity_main.xml
<LinearLayout ......<android.support.v7.widget.RecyclerViewandroid:id="@+id/recycler_view"android:layout_width="maych_parent"android:layout_height="match_parent" /> </LinearLayout>3.類似ListView,新建一個適配器FruitAdapter,定義一個ViewHolder內(nèi)部類,傳入一個View參數(shù),重寫onCreateViewHolder()、onBindViewHolder()、getItemCount()
public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder>{private List<Fruit> mFruitList;static class ViewHolder extends RecyclerView.ViewHolder{ImageView Fruitimage;TextView FruitName;//創(chuàng)建ViewHolder內(nèi)部類public ViewHolder(View view){super(view);fruitImage = (ImageView)findViewById(R.id.fruit_image);fruitName = (TextView)findViewById(R.id.fruit_name);}}public FruitAdapter(List<Fruit> fruitList){mFruitList = fruitList;}
//創(chuàng)建ViewHolder實例@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent,int viewType){View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);ViewHolder holder = new ViewHolder(view);return holder;}
//為子項賦值@Overridepublic void onBindViewHolder(ViewHolder holder,int position){Fruit fruit = mFruitList.get(position);holder.fruitImage.setImageResource(fruit.getImageId());holder.fruitName.setText(fruit.getName());}
//子項的數(shù)目@Overridepublic int getItemCount(){return mFruitList.size();} }
?4.在MainAcitivity中編寫RecyclerView代碼
public class MainActivity extends AppCompatActivity{private Lsit<Fruit> fruitList = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initFruits(); //初始化水果數(shù)據(jù)RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler_view);LinearLayoutManager layoutManager = new LinearLayoutManager(this);recyclerView.setLayoutManager(layoutManager); //指定布局方式FruitAdapter adapter = new FruitAdapter(fruitList);recyclerView.setAdapter(adapter);}private void initFruits(){for(int i=0;i<2;i++){Fruit apple = new Fruit("Apple",R.drawable.apple_pic);fruitList.add(apple);......}} }?
RecyclerView特殊用法
ListView只能實現(xiàn)縱向滾動,而RecyclerView可以實現(xiàn)橫向和瀑布流。
橫向滾動:
修改fruit_item.xml中LinearLayout布局方向:android:orientation="vartical"; 并將ImageView和TextView設(shè)置成水平居中。
在MainActivity中onCreate()添加:layoutManager.setOrientation(LinearLayoutManger.HORIZONTAL);
瀑布流:
調(diào)整fruit_item.xml
在MainActivity中onCreate()添加:staggeredGridLayoutManager layoutManager = staggeredGridLayoutManager(3,StaggeredGridLayoutManger.VERTICAL); //1參:列數(shù),2參:排列方向
?
RecyclerView的點擊事件
......@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent,int viewType){View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);final ViewHolder holder = new ViewHolder(view);holder.fruitView.setOnClickListener(new View.onClickListener(){@Overridepublic void onClick(View v){int position = holder.getAdapterPosition();Fruit fruit = mFruitList.get(position);Toast.makeText(v.getContext(),"you clicked view"+fruit.getName(),Toast.LENGTH_SHORT).show();}});holder.fruitImage.setOnClickListener(new View.onClickListener(){@Overridepublic void onClick(View v){int position = holder.getAdapterPosition();Fruit fruit = mFuritList.get(position);Toast.makeText(v.getContext(),"you clicked image"+fruit.getName(),Toast.LENGTH_SHORT).show();}});return holder;} ......
?
轉(zhuǎn)載于:https://www.cnblogs.com/yl-saber/p/6400751.html
總結(jié)
以上是生活随笔為你收集整理的RecyclerView(滚动控件)的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svn图标的含义
- 下一篇: Behave用户自定义数据类型