效果圖
點擊按鈕實現排序和數據交互
layout:
tools:context="com.example.iamchan.allfunction.ui.program.CollectionsActivity"> <include layout="@layout/toolbar"></include> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:text="排序" android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="交換數據" android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v7.widget.RecyclerView android:id="@+id/recyc" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </LinearLayout> </LinearLayout>
java:
private List<Integer> intList=new ArrayList<>(); private CommonAdapter comm; private Boolean tag=false;//排序標識 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_collections); ButterKnife.bind(this); tvTitle.setText("CollectionsActivity"); ivImgLeft.setImageResource(R.drawable.left); ivImgLeft.setVisibility(View.VISIBLE); initData(); initRecyc(); } private void initData() { intList.add(1); intList.add(5); intList.add(10); intList.add(9); intList.add(4); intList.add(20); } private void initRecyc() { comm=new CommonAdapter(this,R.layout.item_widget,intList) { @Override protected void convert(ViewHolder holder, Object o, int position) { holder.setText(R.id.tv_name,String.valueOf(intList.get(position))); } }; LinearLayoutManager lin=new LinearLayoutManager(this); lin.setOrientation(LinearLayoutManager.VERTICAL); recyc.setAdapter(comm); recyc.setLayoutManager(lin); } @OnClick({R.id.iv_imgLeft, R.id.btn1, R.id.btn2}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.iv_imgLeft: finish(); break; case R.id.btn1: /* * 想要控制升序降序 就需要再傳一個參數 * Collections.sort(intList);//默認升序 * */ tag=!tag; Collections.sort(intList, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { if(tag) { return o2 - o1;//降序排列 }else{ return o1-o2;//升序排列 } } }); comm.notifyDataSetChanged(); break; case R.id.btn2: Collections.swap(intList,0,3);//可以實現切換位置 list中的0位置數據和 3位置數據切換 comm.notifyDataSetChanged(); break; } }