# HorizontalGridView **Repository Path**: null_772_2929/HorizontalGridView ## Basic Information - **Project Name**: HorizontalGridView - **Description**: Android 水平滚动的九宫格列表视图(采用HorizontalScrollView+GridView实现,所有数据在同一页展示,非ViewPager轮播图方式的分页),带滚动指示器,可用于首页金刚区,类似于手机淘宝首页轮播图下面的金刚区。 - **Primary Language**: Android - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2020-12-22 - **Last Updated**: 2021-12-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HorizontalGridView ![Release APK](https://github.com/gzu-liyujiang/HorizontalGridView/workflows/Release%20APK/badge.svg) ![Gradle Package](https://github.com/gzu-liyujiang/HorizontalGridView/workflows/Gradle%20Package/badge.svg) [![jitpack](https://jitpack.io/v/gzu-liyujiang/HorizontalGridView.svg)](https://jitpack.io/#gzu-liyujiang/HorizontalGridView) Android 水平滚动的九宫格列表视图,带滚动指示器,可用于首页金刚区。 ```groovy allprojects { repositories { maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.gzu-liyujiang:HorizontalGridView:1.0.0.20200710@aar' } ``` ### 简单示例 ![效果图](/ScreenGif.gif) ```xml ``` ```java HorizontalGridView horizontalGridView = findViewById(R.id.main_horizontal_grid); int length = 14; int[] icons = new int[length]; CharSequence[] texts = new CharSequence[length]; for (int i = 0; i < length; i++) { icons[i] = android.R.drawable.sym_def_app_icon; texts[i] = "测试" + i; } horizontalGridView.setData(icons, texts, 2, 6); //noinspection Convert2Lambda horizontalGridView.setOnItemClickListener(new HorizontalGridView.OnItemClickListener() { @Override public void onItemClick(GridView parent, View view, int position) { Toast.makeText(parent.getContext(), "position=" + position, Toast.LENGTH_SHORT).show(); } }); ``` ### 自定义适配器 ![效果图](/ScreenGif2.gif) ```java public class BlockGridAdapter extends AbsGridAdapter { public BlockGridAdapter(List data) { super(data); } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent) { View view = View.inflate(parent.getContext(), R.layout.adapter_home_bolck_grid, null); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { ImageView imageView = holder.findView(R.id.home_block_icon); UiUxUtils.adaptGifImage(imageView, getItem(position).getImgUrl()); TextView textView = holder.findView(R.id.home_block_text); textView.setText(getItem(position).getTitle()); } } ``` ```java private void fetchGridBlock() { blockGridView.setVisibility(View.GONE); handleGridBlock(JsonStorage.readHomeBlock()); HomeRepository.getBlock(new SimpleCallback>() { @Override public void onDataSuccess(List data) { JsonStorage.saveHomeBlock(data); handleGridBlock(data); } }); } private void handleGridBlock(List data) { if (data == null || data.size() == 0) { return; } blockGridView.setVisibility(View.VISIBLE); blockGridView.setOnItemClickListener((parent, view, position) -> { BlockEntity item = data.get(position); ArrayMap map = new ArrayMap<>(); map.put("linkUrl", item.getLinkUrl()); JAnalyticsSDK.onCountEvent(activity, "home_block", map); RouteUtils.openJump(activity, item); }); blockGridView.setAdapter(new BlockGridAdapter(data)); } ``` ### 指示器 ```text res/drawable/hgv_indicator_normal.xml res/drawable/hgv_indicator_thumb.xml ``` ### 颜色 ```xml #CCCCCC #03A9F4 ``` ### 尺寸 ```xml 14dp 14dp 2dp 80dp 4dp 20dp ``` ## License ```text Copyright (c) 2019-2020 gzu-liyujiang <1032694760@qq.com> The software is licensed under the Mulan PSL v1. You can use this software according to the terms and conditions of the Mulan PSL v1. You may obtain a copy of Mulan PSL v1 at: http://license.coscl.org.cn/MulanPSL THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v1 for more details. ```