Android RecycleView分組


 

 

 效果圖

1、導入第三方庫

implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.49'

2、XML布局
分組標題:

navigation_righthead.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="@color/colorGray"
android:orientation="vertical">

<TextView
android:id="@+id/navigation_rightHead"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="10dp"
android:singleLine="true"
android:textColor="@color/colorBlack"
android:textSize="16sp" />
</LinearLayout>

分組文本:
navigation_right.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">

<TextView
android:id="@+id/navigation_txt_rightTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

3、實體類 (Navigation)
繼承SectionEntity

public class Navigation extends SectionEntity<Navigation.NavigationItem> {

public Navigation(boolean isHeader, String header) {
super(isHeader, header);
}

public Navigation(NavigationItem bean) {
super(bean);
}

public static class NavigationItem {
private String title;
private String link;

public NavigationItem(String title) {
this.title = title;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getLink() {
return link;
}

public void setLink(String link) {
this.link = link;
}
}
}

3、適配器(NavigationRghtAdapter)
繼承 (BaseSectionQuickAdapter)
public class NavigationRightAdapter extends BaseSectionQuickAdapter<Navigation, BaseViewHolder> {

public NavigationRightAdapter(int layoutResId, int sectionHeadResId, List<Navigation> data) {
super(layoutResId, sectionHeadResId, data);
}

@Override
protected void convertHead(BaseViewHolder helper, Navigation item) {
helper.setText(R.id.navigation_rightHead, item.header);
}

@Override
protected void convert(@NonNull BaseViewHolder helper, Navigation item) {
Navigation.NavigationItem t = item.t;
helper.setText(R.id.navigation_txt_rightTitle, t.getTitle());
}
}

4、NavigationFragment(碎片)

public class NavigationFragment extends Fragment {
private View view;
private List<Navigation> navigationList;//右邊數據
private RecyclerView recyclerView;
private NavigationRightAdapter rightAdapter;
private GridLayoutManager gridLayoutManager;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_navigation, container, false);
initData();
initRight();
return view;
}

//獲取數據
private void initData() {
navigationList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
navigationList.add(new Navigation(true, "標題" + i));
navigationList.add(new Navigation(new Navigation.NavigationItem("數據")));
navigationList.add(new Navigation(new Navigation.NavigationItem("數據")));
navigationList.add(new Navigation(new Navigation.NavigationItem("數據")));
}
}

private void initRight() {
gridLayoutManager = new GridLayoutManager(getContext(), 2);
recyclerView=view.findViewById(R.id.navigation_recycle_right);
if (rightAdapter == null) {
rightAdapter = new NavigationRightAdapter(R.layout.navigation_right, R.layout.navigation_righthead, null);
recyclerView.setLayoutManager(gridLayoutManager);

recyclerView.setAdapter(rightAdapter);
} else {
rightAdapter.notifyDataSetChanged();
}
rightAdapter.setNewData(navigationList);
rightAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
if (navigationList.get(position).isHeader) {
Toast.makeText(getContext(), "你點擊了1" + navigationList.get(position).header, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getContext(), "你點擊了" + navigationList.get(position).t.getTitle(), Toast.LENGTH_SHORT).show();

}
}
});
}

}




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM