Android 设置gridview条目监听

AlbumFragment

package com.meetdilse.store.ui.fragment;

import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.meetdilse.store.R;
import com.meetdilse.store.base.BaseFragment;
import com.meetdilse.store.base.OkHttp;
import com.meetdilse.store.data.DiscoverAlbum;
import com.meetdilse.store.data.DiscoverMovie;
import com.meetdilse.store.photoview.TestImageLoader;
import com.meetdilse.store.photoview.UserViewInfo;
import com.meetdilse.store.ui.adapter.DiscoverAlbumAdpter;
import com.previewlibrary.GPreviewBuilder;
import com.previewlibrary.ZoomMediaLoader;
import com.scwang.smart.refresh.layout.api.RefreshLayout;

import java.util.ArrayList;
import java.util.List;

public class AlbumFragment extends BaseFragment {

    private GridView mGridView;
    private int mPage;
    private DiscoverAlbumAdpter discoverAlbumAdpter;
    private int mPhotoId;
    private GridView mGrid;
    private List<UserViewInfo> mThumbViewInfoList;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_album,container,false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        ZoomMediaLoader.getInstance().init(new TestImageLoader());

        mGridView=view.findViewById(R.id.gv_album);
        mGrid=mGridView;
        discoverAlbumAdpter=new DiscoverAlbumAdpter(getActivity());
        mGrid.setAdapter(discoverAlbumAdpter);
        mThumbViewInfoList = new ArrayList<UserViewInfo>();

        OkHttp.create(this).buyPhoto(mPhotoId).enqueue((call, httpRes) -> {
            Log.v("buyvideo", httpRes.toString());
        });

        OkHttp.create(this).getHotPhotoList(1).enqueue((call,httpRes)->{
            Log.v("getHotPhotoList",httpRes.toString());
            if (httpRes.isSuccessful()){
                List<DiscoverAlbum> data=httpRes.dataFromList(DiscoverAlbum.class);
                discoverAlbumAdpter.addAll(data);

                for (DiscoverAlbum datum : data) {
                    mThumbViewInfoList.add(new UserViewInfo(datum.getUinfo().getAvatar()));
                    Log.v("datum.getUinfo()",datum.getUinfo().getAvatar());
                }
            }
        });

        RefreshLayout refreshLayout =view.findViewById(R.id.refreshLayout);//绑定那个刷新的布局
        refreshLayout.setOnRefreshListener(this::onRefresh);//设置下拉监听,当下拉的时候调用函数
        refreshLayout.setOnLoadMoreListener(this::onLoadMore);//设置上拉监听,当上拉时候调用函数

        //设置监听,点击item查看图片
        mGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//                DiscoverAlbum item=discoverAlbumAdpter.getItem(i);
//                mPhotoId =item.getId();
//                Log.v("mVideoId", String.valueOf(mPhotoId));
                GPreviewBuilder.from(AlbumFragment.this)
                        .setData(mThumbViewInfoList)
                        .setCurrentIndex(i)
                        .setType(GPreviewBuilder.IndicatorType.Number)
                        .start();
            }
        });


    }

    private void onRefresh(@NonNull RefreshLayout refreshLayout) {
        mPage = 1;
        OkHttp.create().getHotPhotoList(mPage).enqueue((call, httpRes)->{
            if (httpRes.isSuccessful()){
                List<DiscoverAlbum> data=httpRes.dataFromList(DiscoverAlbum.class);
                discoverAlbumAdpter.addAll(data);
                for (DiscoverAlbum datum : data) {
                    mThumbViewInfoList.add(new UserViewInfo(datum.getUinfo().getAvatar()));//下拉刷新或者上拉加载都要再次添加图片,用来浏览的
                }
            }
            refreshLayout.finishRefresh();
        });
    }

    private void onLoadMore(@NonNull RefreshLayout refreshlayout) {
        mPage++;
        OkHttp.create().getHotPhotoList(mPage).enqueue((call, httpRes)->{
            if (httpRes.isSuccessful()){
                List<DiscoverAlbum> data=httpRes.dataFromList(DiscoverAlbum.class);
                if (data.size()==0) {
                    refreshlayout.finishLoadMoreWithNoMoreData();
                }else {
                    for (DiscoverAlbum datum : data) {
                        mThumbViewInfoList.add(new UserViewInfo(datum.getUinfo().getAvatar()));
                    }

                    discoverAlbumAdpter.addAll(data);
                }
                refreshlayout.finishLoadMore();

            }
        });
    }

    /**
     * 查找信息
     * 从第一个完整可见item逆序遍历,如果初始位置为0,则不执行方法内循环
     */
    private void computeBoundsBackward(int firstCompletelyVisiblePos) {
        for (int i = firstCompletelyVisiblePos; i < mThumbViewInfoList.size(); i++) {
            View itemView = mGrid.getChildAt(i - firstCompletelyVisiblePos);
            Rect bounds = new Rect();
            if (itemView != null) {
//                //需要显示过度控件
//                ImageView thumbView = (ImageView) itemView.findViewById(R.id.iv_al);
//                //拿到在控件屏幕可见中控件显示为矩形Rect信息
//                thumbView.getGlobalVisibleRect(bounds);
            }
            mThumbViewInfoList.get(i).setBounds(bounds);
        }
    }
}

下面这个就是设置监听了

       //设置监听,点击item查看图片
        mGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//                DiscoverAlbum item=discoverAlbumAdpter.getItem(i);
//                mPhotoId =item.getId();
//                Log.v("mVideoId", String.valueOf(mPhotoId));
                GPreviewBuilder.from(AlbumFragment.this)
                        .setData(mThumbViewInfoList)
                        .setCurrentIndex(i)
                        .setType(GPreviewBuilder.IndicatorType.Number)
                        .start();
            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值