Adapter内的onItemClick监听器四个arg参数

本文详细解析了ListView点击事件处理过程,包括点击事件触发机制、参数解释以及实际应用案例,帮助开发者深入理解并有效利用ListView的点击事件。
举个例子你会理解的更快:X, Y两个listview,X里有1,2,3,4这4个item,Y里有a,b,c,d这4个item。
如果你点了b这个item。如下:

public void onItemClick (AdapterView<?> parent, View view, int position, long id )

// parent 相当于listview Y适配器的一个指针,可以通过它来获得Y里装着的一切东西,再通俗点就是说告诉你,你点的是Y,不是X - -
// view 是你点b item的view的句柄,就是你可以用这个view,来获得b里的控件的id后操作控件
// position 是b在Y适配器里的位置(生成listview时,适配器一个一个的做item,然后把他们按顺序排好队,在放到listview里,意思就是这个b是第position号做好的)
// id 是b在listview Y里的第几行的位置(很明显是第2行),大部分时候position和id的值是一样的,如果需要的话,你可以自己加个log把position和id都弄出来在logcat里瞅瞅,看了之后心里才踏实。
package com.weishitech.chathistorybackup.fragment.home; import static android.view.View.VISIBLE; import android.app.AlertDialog; import android.content.Context; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Handler; import android.util.Log; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; import com.anythink.banner.api.ATBannerExListener; import com.anythink.banner.api.ATBannerView; import com.anythink.core.api.ATAdConst; import com.anythink.core.api.ATAdInfo; import com.anythink.core.api.ATNetworkConfirmInfo; import com.anythink.core.api.ATShowConfig; import com.anythink.core.api.AdError; import com.anythink.dlopt.api.ATAppDownloadListener; import com.anythink.interstitial.api.ATInterstitial; import com.anythink.interstitial.api.ATInterstitialAutoAd; import com.anythink.interstitial.api.ATInterstitialAutoEventListener; import com.anythink.interstitial.api.ATInterstitialAutoLoadListener; import com.anythink.interstitial.api.ATInterstitialExListener; import com.anythink.nativead.api.ATNative; import com.anythink.nativead.api.ATNativeAdView; import com.anythink.nativead.api.ATNativeDislikeListener; import com.anythink.nativead.api.ATNativeEventExListener; import com.anythink.nativead.api.ATNativeNetworkListener; import com.anythink.nativead.api.ATNativePrepareExInfo; import com.anythink.nativead.api.ATNativePrepareInfo; import com.anythink.nativead.api.ATNativeView; import com.anythink.nativead.api.NativeAd; import com.anythink.nativead.api.NativeAdInteractionType; import com.hfd.common.base.BaseFragment; import com.hfd.common.model.PublicData; import com.hfd.common.net.GenericsCallback; import com.hfd.common.net.HttpBuiler; import com.hfd.common.net.JsonGenericsSerializator; import com.hfd.common.net.Url; import com.hfd.common.util.ToastUtil; import com.weishitech.chathistorybackup.LCAppcation; import com.weishitech.chathistorybackup.MainActivity; import com.weishitech.chathistorybackup.R; import com.weishitech.chathistorybackup.ad.AdConst; import com.weishitech.chathistorybackup.ad.base.GgBaseActivity; import com.weishitech.chathistorybackup.ad.util.SDKUtil; import com.weishitech.chathistorybackup.ad.util.SelfRenderViewUtil; import com.weishitech.chathistorybackup.bean.BackBean; import com.weishitech.chathistorybackup.fragment.Adapter.BackupAdapter; import com.weishitech.chathistorybackup.fragment.Adapter.BackupFileAdapter; import com.weishitech.chathistorybackup.utils.BackupDownloadManager; import com.weishitech.chathistorybackup.utils.BackupFile; import com.weishitech.chathistorybackup.utils.EnhancedFileScanner; import com.weishitech.chathistorybackup.utils.LoadingDialogUtil; import com.youth.banner.util.LogUtils; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import okhttp3.Call; public class BackupFragment extends BaseFragment { private static final String ARG_SOURCE = "source"; private static final String ARG_TYPE = "type"; private static final String ARG_MINE = "mine"; private String mine; // no 或 yes private String source; // wechat 或 qq private String type; // video, image, audio, document private RecyclerView rvBackup; private BackupFileAdapter adapter; private BackupAdapter backupAdapter; private TextView tvDelete,tvBackup; private List<BackupFile> fileList = new ArrayList<>(); private List<BackBean.DataBean> backupBeanList = new ArrayList<>(); private BackupDownloadManager backupDownloadManager; private static final String TAG = BackupFragment.class.getSimpleName(); /** 横幅广告*/ private ATBannerView mBannerView; private FrameLayout mBannerViewContainer; /** 原生视频广告*/ private ATNative mATNative; private NativeAd mNativeAd; private ATNativeView mATNativeView; private View mSelfRenderView; /** 插屏广告*/ private ATInterstitial mInterstitialAd; public static BackupFragment newInstance(String source, String type, String mine) { BackupFragment fragment = new BackupFragment(); Bundle args = new Bundle(); args.putString(ARG_SOURCE, source); args.putString(ARG_TYPE, type); args.putString(ARG_MINE,mine); fragment.setArguments(args); return fragment; } @Override protected int setLayout() { return R.layout.fragment_backup; } @Override protected void initView() { if (getArguments() != null) { source = getArguments().getString(ARG_SOURCE); type = getArguments().getString(ARG_TYPE); mine = getArguments().getString(ARG_MINE); } rvBackup = fvbi(R.id.rv_backup); tvDelete = fvbi(R.id.tv_delete); tvBackup =fvbi(R.id.tv_backup); /** 横幅广告*/ mBannerViewContainer = fvbi(R.id.adview_container); /** 原生视频广告*/ mATNativeView = fvbi(R.id.native_ad_view); mSelfRenderView = fvbi(R.id.native_selfrender_view); backupDownloadManager = new BackupDownloadManager(mContext); setupRecyclerView(); } @Override protected void initClick() { tvBackup.setOnClickListener(v -> { /** 插屏广告*/ if(LCAppcation.getInstance().isShowAd(2)){ initCpInterstitialAd(); initCpAutoLoad(); isCpAdReady(); new Handler().postDelayed(() -> { ATInterstitial.entryAdScenario(LCAppcation.interstitialAdId, AdConst.SCENARIO_ID.INTERSTITIAL_AD_SCENARIO); if (mInterstitialAd.isAdReady()) { showCpAd(); } }, 2000); // 延时2000毫秒(2秒)后跳转 } if (Objects.equals(mine, "no")){ uploadFile(adapter.getSelectedFiles()); }else { downloadFile(backupAdapter.getSelectedFiles()); } }); tvDelete.setOnClickListener(v -> { /** 插屏广告*/ if(LCAppcation.getInstance().isShowAd(2)){ initCpInterstitialAd(); initCpAutoLoad(); isCpAdReady(); new Handler().postDelayed(() -> { ATInterstitial.entryAdScenario(LCAppcation.interstitialAdId, AdConst.SCENARIO_ID.INTERSTITIAL_AD_SCENARIO); if (mInterstitialAd.isAdReady()) { showCpAd(); } }, 2000); // 延时2000毫秒(2秒)后跳转 } if (Objects.equals(mine, "no")) { showDeleteConfirmDialog(adapter.getSelectedFiles()); }else { showDeleteDialog(backupAdapter.getSelectedFiles()); } }); } private void downloadFile(List<BackBean.DataBean> selectedFiles) { backupDownloadManager.downloadBackupFiles(selectedFiles, new BackupDownloadManager.DownloadCallback() { @Override public void onSuccess(File downloadDir, int successCount) { LoadingDialogUtil.hideLoading(); ToastUtil.showShortToast(downloadDir.getAbsolutePath()); } @Override public void onError(String error) { ToastUtil.showShortToast(error); } }); } @Override protected void initData() { tvBackup.setText(Objects.equals(mine, "no") ?"备份":"导出"); /** 原生视频广告*/ if (LCAppcation.getInstance().isShowAd(4)) { //准备加载广告 initYsATNativeAd(LCAppcation.naviteAdId); final int adViewWidth = mATNativeView.getWidth() != 0 ? mATNativeView.getWidth() : getResources().getDisplayMetrics().widthPixels; final int adViewHeight = adViewWidth * 3 / 4; loadYsAd(adViewWidth, adViewHeight); isYsAdReady(); new Handler().postDelayed(() -> { ATNative.entryAdScenario(LCAppcation.naviteAdId, AdConst.SCENARIO_ID.NATIVE_AD_SCENARIO); if (isYsAdReady()) { showYsAd(); } }, 2000); } /** 横幅广告*/ if(LCAppcation.getInstance().isShowAd(1)) { initHfBannerView(); addHfBannerViewToContainer(); mBannerView.setPlacementId(LCAppcation.bannerAdId); ATBannerView.entryAdScenario(LCAppcation.bannerAdId, AdConst.SCENARIO_ID.BANNER_AD_SCENARIO); mBannerView.setShowConfig(getHfBannerATShowConfig()); new Handler().postDelayed(() -> { loadHfBannerAd(); }, 1000); // 延时2000毫秒(2秒)后跳转 } } private void setupRecyclerView() { if (mine.equals("no")) { adapter = new BackupFileAdapter(fileList); if (type.equals("image") || type.equals("video")) { rvBackup.setLayoutManager(new GridLayoutManager(getContext(), 3)); rvBackup.setNestedScrollingEnabled(false); // 禁止滑动 } else { rvBackup.setLayoutManager(new LinearLayoutManager(getContext())); } rvBackup.setAdapter(adapter); adapter.setOnItemClickListener(new BackupFileAdapter.OnItemClickListener() { @Override public void onItemClick(int position) { BackupFile file = fileList.get(position); // 处理文件点击,可以在这里实现文件预览等功能 // previewFile(file); } @Override public void onItemLongClick(int position) { // 长按操作 // showFileOptions(position); } }); }else { backupAdapter = new BackupAdapter(mContext,backupBeanList); if (type.equals("image") || type.equals("video")) { rvBackup.setLayoutManager(new GridLayoutManager(getContext(), 3)); rvBackup.setNestedScrollingEnabled(false); // 禁止滑动 } else { rvBackup.setLayoutManager(new LinearLayoutManager(getContext())); } rvBackup.setAdapter(backupAdapter); backupAdapter.setOnItemClickListener(new BackupAdapter.OnItemClickListener() { @Override public void onItemClick(int position) { BackBean.DataBean file = backupBeanList.get(position); // 处理文件点击,可以在这里实现文件预览等功能 // previewFile(file); } @Override public void onItemLongClick(int position) { // 长按操作 // showFileOptions(position); } }); } } // 设置全选状态 public void setSelectAll(boolean selectAll) { if (adapter != null) { Log.i("11111","点击了全选状态为:"+selectAll); adapter.selectAll(selectAll); }else { Log.i("11111","adapter为空:"); } } // 显示删除确认对话框 private void showDeleteConfirmDialog(List<BackupFile> list) { if (getContext() == null|| list.isEmpty()) return; int count = list.size(); new AlertDialog.Builder(getContext()) .setTitle("确认删除") .setMessage("确定要删除选中的 " + count + " 个文件吗?") .setPositiveButton("删除", (dialog, which) -> { performDelete(list); }) .setNegativeButton("取消", null) .show(); } // 显示删除确认对话框 private void showDeleteDialog(List<BackBean.DataBean> list) { if (getContext() == null|| list.isEmpty()) return; int count = list.size(); new AlertDialog.Builder(getContext()) .setTitle("确认删除") .setMessage("确定要删除选中的 " + count + " 个文件吗?") .setPositiveButton("删除", (dialog, which) -> { Delete(list); }) .setNegativeButton("取消", null) .show(); } private void Delete(List<BackBean.DataBean> list){ StringBuilder s= new StringBuilder(); for (BackBean.DataBean data :list){ s.append(data.getId()).append(","); } HttpBuiler.deleteItem(Url.remove+s).build().execute(new GenericsCallback<PublicData>(new JsonGenericsSerializator()) { @Override public void onError(Call call, Exception e, int id) { } @Override public void onResponse(PublicData response, int id) { if (response.getCode()==Url.SuccessCode){ getList(LCAppcation.oaid); } } }); } // 执行删除操作 private void performDelete(List<BackupFile> list) { if (adapter == null) return; for (BackupFile position : list) { // 从数据源中删除 fileList.remove(position); // 实际删除文件(如果需要) deletePhysicalFile(position); // 从适配器中删除 adapter.updateData(fileList); } } // 删除物理文件(根据你的实际需求实现) private void deletePhysicalFile(BackupFile backupFile) { try { File file = new File(backupFile.getPath()); if (file.exists()) { boolean deleted = file.delete(); if (!deleted) { Log.e("BackupFragment", "文件删除失败: " + backupFile.getPath()); } } } catch (Exception e) { Log.e("BackupFragment", "删除文件时出错", e); } } public void uploadFile(List<BackupFile> selectedFiles){ LoadingDialogUtil.showLoading(mContext); if (selectedFiles.isEmpty())return; HashMap<String, String> map = getStringStringHashMap(selectedFiles); map.put("useType", Objects.equals(source, "wechat") ?"1":"2"); HashMap<String,List<File>> fileMap = new HashMap<>(); HashMap<String,List<String>> nameMap = new HashMap<>(); List<File> list = new ArrayList<>(); List<String> nameList = new ArrayList<>(); for (BackupFile backupFile : selectedFiles){ list.add(backupFile.getCurrentFile()); nameList.add(backupFile.getName()); } fileMap.put("file",list); nameMap.put("name",nameList); HttpBuiler.postFileBuilder(Url.upload,map,fileMap,nameMap).build().execute(new GenericsCallback<PublicData>(new JsonGenericsSerializator()) { @Override public void onError(Call call, Exception e, int id) { } @Override public void onResponse(PublicData response, int id) { if (response.getCode()==Url.SuccessCode) { ToastUtil.showShortToast(response.getMessage()); LoadingDialogUtil.hideLoading(); }else { ToastUtil.showShortToast(response.getMessage()); } } }); } @NonNull private static HashMap<String, String> getStringStringHashMap(List<BackupFile> selectedFiles) { HashMap<String,String> map = new HashMap<>(); map.put("oaid", LCAppcation.oaid); switch (selectedFiles.get(0).getType()){ case "video": map.put("type","2"); break; case "image": map.put("type","1"); break; case "audio": map.put("type","3"); break; case "document": map.put("type","4"); break; } return map; } public void getList(String id){ HashMap<String,String> answerMap = new HashMap<>(); HttpBuiler.getInfo(Url.oaid+id,answerMap).build().execute(new GenericsCallback<BackBean>(new JsonGenericsSerializator()) { @Override public void onError(Call call, Exception e, int id) { LogUtils.e("getList"+"错误"+e.getMessage()); } @Override public void onResponse(BackBean response, int id) { if(response.getCode() == Url.SuccessCode) { if (!response.getData().isEmpty()){ backupBeanList.clear(); for (BackBean.DataBean data : response.getData()){ data.setUrl(backupDownloadManager.buildFullUrl(data.getFixedUrl())); if (source.equals("wechat") && (data.getUseType() == 1)){ if (type.equals("image") && (data.getType()==1)){ backupBeanList.add(data); }else if (type.equals("video") && (data.getType()==2)){ backupBeanList.add(data); }else if (type.equals("audio") && (data.getType()==3)){ backupBeanList.add(data); }else if (type.equals("document") && (data.getType()==4)){ backupBeanList.add(data); } }else if (source.equals("qq") && (data.getUseType() == 2)){ if (type.equals("image") && (data.getType()==1)){ backupBeanList.add(data); }else if (type.equals("video") && (data.getType()==2)){ backupBeanList.add(data); }else if (type.equals("audio") && (data.getType()==3)){ backupBeanList.add(data); }else if (type.equals("document") && (data.getType()==4)){ backupBeanList.add(data); } } } backupAdapter.updateData(backupBeanList); } } } }); } @Override public void onResume() { /** 原生视频广告*/ if (mNativeAd != null) { mNativeAd.onResume(); } super.onResume(); if (Objects.equals(mine,"no")) { // 设置进度监听器 EnhancedFileScanner.setProgressListener(new EnhancedFileScanner.ScanProgressListener() { @Override public void onScanStart(String source, String fileType) { getActivity().runOnUiThread(() -> { // showLoading("正在扫描" + getTypeDisplayName(fileType) + "文件..."); }); } @Override public void onDirectoryScanned(String directoryPath, int fileCount, int totalFiles) { Log.d("ScanProgress", "扫描目录: " + new File(directoryPath).getName() + ", 本目录找到: " + fileCount + "个, 总计: " + totalFiles + "个"); } @Override public void onScanProgress(int currentDirectories, int totalDirectories) { getActivity().runOnUiThread(() -> { // updateProgress(currentDirectories, totalDirectories); }); } @Override public void onScanComplete(List<BackupFile> files, EnhancedFileScanner.ScanStats stats) { getActivity().runOnUiThread(() -> { // hideLoading(); fileList = files; adapter.updateData(fileList); // updateEmptyView(); // showScanResult(stats); }); } @Override public void onScanError(String errorMessage) { getActivity().runOnUiThread(() -> { // hideLoading(); // showError(errorMessage); }); } }); // 开始扫描 if ("wechat".equals(source)) { EnhancedFileScanner.scanWeChatFilesEnhanced(getContext(), type); } else { EnhancedFileScanner.scanQQFilesEnhanced(getContext(), type); } }else { getList(LCAppcation.oaid); } } @Override public void onPause() { /** 原生视频广告*/ if (mNativeAd != null) { mNativeAd.onPause(); } super.onPause(); } @Override public void onDestroyView() { super.onDestroyView(); /** 原生视频广告*/ destroyYsAd(); if (mATNative != null) { mATNative.setAdListener(null); mATNative.setAdSourceStatusListener(null); mATNative.setAdMultipleLoadedListener(null); } /** 插屏广告*/ for (Map.Entry<String, Boolean> entry : mCpAutoLoadPlacementIdMap.entrySet()) { ATInterstitialAutoAd.removePlacementId(entry.getKey()); } if (mInterstitialAd != null) { mInterstitialAd.setAdSourceStatusListener(null); mInterstitialAd.setAdDownloadListener(null); mInterstitialAd.setAdListener(null); mInterstitialAd.setAdMultipleLoadedListener(null); } /** 横幅广告*/ if (mBannerViewContainer != null) { mBannerViewContainer.removeAllViews(); } if (mBannerView != null) { mBannerView.destroy(); } } @Override public void onDestroy() { super.onDestroy(); // 释放资源 EnhancedFileScanner.release(); if (adapter != null) { adapter.release(); } } /** 原生视频广告*/ private ATShowConfig getYsATShowConfig() { ATShowConfig.Builder builder = new ATShowConfig.Builder(); builder.scenarioId(AdConst.SCENARIO_ID.NATIVE_AD_SCENARIO); builder.showCustomExt(AdConst.SHOW_CUSTOM_EXT.NATIVE_AD_SHOW_CUSTOM_EXT); return builder.build(); } private void exitYsNativePanel() { destroyYsAd(); } public void destroyYsAd() { if (mNativeAd != null) { mATNativeView.removeAllViews(); mATNativeView.setVisibility(View.GONE); mNativeAd.destory(); } } private void initYsATNativeAd(String placementId) { mATNative = new ATNative(getActivity(), placementId, new ATNativeNetworkListener() { @Override public void onNativeAdLoaded() { printLogOnUI("onNativeAdLoaded load success..."); } @Override public void onNativeAdLoadFail(AdError adError) { printLogOnUI("onNativeAdLoadFail load fail...:" + adError.getFullErrorInfo()); } }); mATNative.setAdSourceStatusListener(new GgBaseActivity.ATAdSourceStatusListenerImpl()); } private void loadYsAd(int adViewWidth, int adViewHeight) { SDKUtil.initSDK(getActivity()); printLogOnUI(getString(R.string.anythink_ad_status_loading)); Map<String, Object> localExtra = new HashMap<>(); localExtra.put(ATAdConst.KEY.AD_WIDTH, adViewWidth); localExtra.put(ATAdConst.KEY.AD_HEIGHT, adViewHeight); mATNative.setLocalExtra(localExtra); mATNative.makeAdRequest(); } private boolean isYsAdReady() { boolean isReady = mATNative.checkAdStatus().isReady(); printLogOnUI("isAdReady:" + isReady); List<ATAdInfo> atAdInfoList = mATNative.checkValidAdCaches(); Log.i(TAG, "Valid Cahce size:" + (atAdInfoList != null ? atAdInfoList.size() : 0)); if (atAdInfoList != null) { for (ATAdInfo adInfo : atAdInfoList) { Log.i(TAG, "\nCahce detail:" + adInfo.toString()); } } return isReady; } private void showYsAd() { // NativeAd nativeAd = mATNative.getNativeAd(); NativeAd nativeAd = mATNative.getNativeAd(getYsATShowConfig()); if (nativeAd != null) { if (mNativeAd != null) { mNativeAd.destory(); } mNativeAd = nativeAd; mNativeAd.setAdRevenueListener(new GgBaseActivity.AdRevenueListenerImpl()); mNativeAd.setNativeEventListener(new ATNativeEventExListener() { @Override public void onDeeplinkCallback(ATNativeAdView view, ATAdInfo adInfo, boolean isSuccess) { printLogOnUI("onDeeplinkCallback:" + adInfo.toString() + "--status:" + isSuccess); } @Override public void onAdImpressed(ATNativeAdView view, ATAdInfo entity) { printLogOnUI("native ad onAdImpressed:\n" + entity.toString()); MainActivity.reportInfo(entity); } @Override public void onAdClicked(ATNativeAdView view, ATAdInfo entity) { printLogOnUI("native ad onAdClicked:\n" + entity.toString()); } @Override public void onAdVideoStart(ATNativeAdView view) { printLogOnUI("onAdVideoStart"); } @Override public void onAdVideoEnd(ATNativeAdView view) { printLogOnUI("onAdVideoEnd"); } @Override public void onAdVideoProgress(ATNativeAdView view, int progress) { printLogOnUI("onAdVideoProgress"); } }); mNativeAd.setDislikeCallbackListener(new ATNativeDislikeListener() { @Override public void onAdCloseButtonClick(ATNativeAdView view, ATAdInfo entity) { printLogOnUI("native ad onAdCloseButtonClick"); exitYsNativePanel(); } }); mATNativeView.removeAllViews(); ATNativePrepareInfo mNativePrepareInfo = null; try { mNativePrepareInfo = new ATNativePrepareExInfo(); //bindTTDislikeDialog(mATNativeView, mNativeAd); if (mNativeAd.isNativeExpress()) { mNativeAd.renderAdContainer(mATNativeView, null); } else { SelfRenderViewUtil.bindSelfRenderView(getActivity(), mNativeAd.getAdMaterial(), mSelfRenderView, mNativePrepareInfo); mNativeAd.renderAdContainer(mATNativeView, mSelfRenderView); } } catch (Exception e) { e.printStackTrace(); } //下载类原生自渲染广告设置下载状态监听,更新CTA按钮文案 if (!mNativeAd.isNativeExpress() && mNativeAd.getAdMaterial() .getNativeAdInteractionType() == NativeAdInteractionType.APP_DOWNLOAD_TYPE && mNativePrepareInfo.getCtaView() != null && mNativePrepareInfo.getCtaView() instanceof TextView) { TextView ctaTextView = (TextView) mNativePrepareInfo.getCtaView(); mNativeAd.setAdDownloadListener(new ATAppDownloadListener() { @Override public void onDownloadStart(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { ctaTextView.setText("暂停下载"); printLogOnUI("onDownloadStart totalBytes:" + totalBytes + ",currBytes:" + currBytes + ",appName:" + appName); } }); } @Override public void onDownloadUpdate(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { ctaTextView.setText("暂停下载"); printLogOnUI("onDownloadUpdate totalBytes:" + totalBytes + ",currBytes:" + currBytes + ",appName:" + appName); } }); } @Override public void onDownloadPause(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { ctaTextView.setText("恢复下载"); printLogOnUI("onDownloadPause totalBytes:" + totalBytes + ",currBytes:" + currBytes + ",appName:" + appName); } }); } @Override public void onDownloadFinish(ATAdInfo adInfo, long totalBytes, String fileName, String appName) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { ctaTextView.setText("立即安装"); printLogOnUI("onDownloadFinish totalBytes:" + totalBytes + ",appName:" + appName); } }); } @Override public void onDownloadFail(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { ctaTextView.setText("开始下载"); printLogOnUI("onDownloadFail totalBytes:" + totalBytes + ",currBytes:" + currBytes + ",appName:" + appName); } }); } @Override public void onInstalled(ATAdInfo adInfo, String fileName, String appName) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { ctaTextView.setText("打开应用"); printLogOnUI("onInstalled appName:" + appName); } }); } }); } mNativeAd.prepare(mATNativeView, mNativePrepareInfo); mATNativeView.setVisibility(View.VISIBLE); } else { printLogOnUI("this placement no cache!"); } } protected void printLogOnUI(String msg) { // Log.i(TAG,msg); } /** 插屏广告*/ private final Map<String, Boolean> mCpAutoLoadPlacementIdMap = new HashMap<>(); private final ATInterstitialAutoLoadListener autoLoadListener = new ATInterstitialAutoLoadListener() { @Override public void onInterstitialAutoLoaded(String placementId) { Log.i(TAG, "PlacementId:" + placementId + ": onInterstitialAutoLoaded"); } @Override public void onInterstitialAutoLoadFail(String placementId, AdError adError) { Log.i(TAG, "PlacementId:" + placementId + ": onInterstitialAutoLoadFail:\n" + adError.getFullErrorInfo()); } }; private final ATInterstitialAutoEventListener autoCpEventListener = new ATInterstitialAutoEventListener() { @Override public void onInterstitialAdClicked(ATAdInfo adInfo) { Log.i(TAG, "onInterstitialAdClicked:" + adInfo.toString()); } @Override public void onInterstitialAdShow(ATAdInfo adInfo) { Log.i(TAG, "onInterstitialAdShow1111111111:" + adInfo.toString()); MainActivity.reportInfo(adInfo); } @Override public void onInterstitialAdClose(ATAdInfo adInfo) { Log.i(TAG, "onInterstitialAdClose:" + adInfo.toString()); } @Override public void onInterstitialAdVideoStart(ATAdInfo adInfo) { Log.i(TAG, "onInterstitialAdVideoStart:" + adInfo.toString()); } @Override public void onInterstitialAdVideoEnd(ATAdInfo adInfo) { Log.i(TAG, "onInterstitialAdVideoEnd:" + adInfo.toString()); } @Override public void onInterstitialAdVideoError(AdError adError) { Log.i(TAG, "onInterstitialAdVideoError:" + adError.getFullErrorInfo()); } public void onDeeplinkCallback(ATAdInfo adInfo, boolean isSuccess) { Log.i(TAG, "onDeeplinkCallback:\n" + adInfo.toString() + "| isSuccess:" + isSuccess); } public void onDownloadConfirm(Context context, ATAdInfo adInfo, ATNetworkConfirmInfo networkConfirmInfo) { Log.i(TAG, "onDownloadConfirm:\n" + adInfo.toString()); } }; private void initCpInterstitialAd() { mInterstitialAd = new ATInterstitial(mContext, LCAppcation.interstitialAdId); mInterstitialAd.setAdRevenueListener(new GgBaseActivity.AdRevenueListenerImpl()); mInterstitialAd.setAdListener(new ATInterstitialExListener() { @Override public void onDeeplinkCallback(ATAdInfo adInfo, boolean isSuccess) { Log.i(TAG, "onDeeplinkCallback:" + adInfo.toString() + "--status:" + isSuccess); } @Override public void onDownloadConfirm(Context context, ATAdInfo adInfo, ATNetworkConfirmInfo networkConfirmInfo) { Log.i(TAG, "onDownloadConfirm: adInfo=" + adInfo.toString()); } @Override public void onInterstitialAdLoaded() { Log.i(TAG, "onInterstitialAdLoaded"); } @Override public void onInterstitialAdLoadFail(AdError adError) { Log.i(TAG, "onInterstitialAdLoadFail:\n" + adError.getFullErrorInfo()); } @Override public void onInterstitialAdClicked(ATAdInfo entity) { Log.i(TAG, "onInterstitialAdClicked:\n" + entity.toString()); } @Override public void onInterstitialAdShow(ATAdInfo entity) { Log.i(TAG, "onInterstitialAdShow:\n" + entity.toString()); } @Override public void onInterstitialAdClose(ATAdInfo entity) { Log.i(TAG, "onInterstitialAdClose:\n" + entity.toString()); } @Override public void onInterstitialAdVideoStart(ATAdInfo entity) { Log.i(TAG, "onInterstitialAdVideoStart:\n" + entity.toString()); } @Override public void onInterstitialAdVideoEnd(ATAdInfo entity) { Log.i(TAG, "onInterstitialAdVideoEnd:\n" + entity.toString()); } @Override public void onInterstitialAdVideoError(AdError adError) { Log.i(TAG, "onInterstitialAdVideoError:\n" + adError.getFullErrorInfo()); } }); mInterstitialAd.setAdSourceStatusListener(new GgBaseActivity.ATAdSourceStatusListenerImpl()); } private void initCpAutoLoad() { ATInterstitialAutoAd.init(mContext, null, autoLoadListener); String curPlacementId = LCAppcation.interstitialAdId; mCpAutoLoadPlacementIdMap.put(curPlacementId, true); ATInterstitialAutoAd.addPlacementId(curPlacementId); } private ATShowConfig getCpATShowConfig() { ATShowConfig.Builder builder = new ATShowConfig.Builder(); builder.scenarioId(AdConst.SCENARIO_ID.INTERSTITIAL_AD_SCENARIO); builder.showCustomExt(AdConst.SHOW_CUSTOM_EXT.INTERSTITIAL_AD_SHOW_CUSTOM_EXT); return builder.build(); } private void loadCpAd() { SDKUtil.initSDK(mContext); if (mInterstitialAd == null) { return; } Map<String, Object> localMap = new HashMap<>(); // localMap.put(ATAdConst.KEY.AD_WIDTH, getResources().getDisplayMetrics().widthPixels); // localMap.put(ATAdConst.KEY.AD_HEIGHT, getResources().getDisplayMetrics().heightPixels); //插屏广告使用原生自渲染广告时,设置自定义渲染方式:只需要在发起请求时额外设置setNativeAdCustomRender即可,请求、展示广告流程同插屏广告接入流程相同。 mInterstitialAd.setNativeAdCustomRender(new GgBaseActivity.NativeAdCustomRender(mContext)); mInterstitialAd.setLocalExtra(localMap); mInterstitialAd.load(); } private void isCpAdReady() { ATInterstitialAutoAd.isAdReady(LCAppcation.interstitialAdId); } private void showCpAd() { ATInterstitialAutoAd.show(getActivity(), LCAppcation.interstitialAdId, getCpATShowConfig(), autoCpEventListener, new GgBaseActivity.AdRevenueListenerImpl()); } /** 横幅广告*/ private void initHfBannerView() { mBannerView = new ATBannerView(getActivity()); //Loading and displaying ads should keep the container and BannerView visible all the time mBannerView.setVisibility(VISIBLE); mBannerView.setAdRevenueListener(new GgBaseActivity.AdRevenueListenerImpl()); mBannerView.setBannerAdListener(new ATBannerExListener() { @Override public void onDeeplinkCallback(boolean isRefresh, ATAdInfo adInfo, boolean isSuccess) { Log.i(TAG, "onDeeplinkCallback:" + adInfo.toString() + "--status:" + isSuccess); } @Override public void onDownloadConfirm(Context context, ATAdInfo adInfo, ATNetworkConfirmInfo networkConfirmInfo) { Log.i(TAG, "onDownloadConfirm:" + adInfo.toString() + " networkConfirmInfo:" + networkConfirmInfo); } @Override public void onBannerLoaded() { Log.i(TAG, "onBannerLoaded"); } @Override public void onBannerFailed(AdError adError) { Log.i(TAG, "onBannerFailed: " + adError.getFullErrorInfo()); } @Override public void onBannerClicked(ATAdInfo entity) { Log.i(TAG, "onBannerClicked:" + entity.toString()); } @Override public void onBannerShow(ATAdInfo entity) { Log.i(TAG, "onBannerShow:" + entity.toString()); mBannerViewContainer.setVisibility(VISIBLE); MainActivity.reportInfo(entity); } @Override public void onBannerClose(ATAdInfo entity) { mBannerView.setVisibility(View.GONE); mBannerViewContainer.setVisibility(View.GONE); Log.i(TAG, "onBannerClose:" + entity.toString()); } @Override public void onBannerAutoRefreshed(ATAdInfo entity) { Log.i(TAG, "onBannerAutoRefreshed:" + entity.toString()); } @Override public void onBannerAutoRefreshFail(AdError adError) { Log.i(TAG, "onBannerAutoRefreshFail: " + adError.getFullErrorInfo()); } }); mBannerView.setAdSourceStatusListener(new GgBaseActivity.ATAdSourceStatusListenerImpl()); } private void loadHfBannerAd() { SDKUtil.initSDK(getActivity()); //Loading and displaying ads should keep the container and BannerView visible all the time mBannerView.setVisibility(VISIBLE); mBannerViewContainer.setVisibility(VISIBLE); //int padding = dip2px(12); Map<String, Object> localMap = new HashMap<>(); localMap.put(ATAdConst.KEY.AD_WIDTH, getResources().getDisplayMetrics().widthPixels); localMap.put(ATAdConst.KEY.AD_HEIGHT, dip2px(90)); mBannerView.setLocalExtra(localMap); //横幅广告使用原生自渲染广告时,设置自定义渲染方式:只需要在发起请求时额外设置setNativeAdCustomRender即可,请求、展示广告流程同横幅广告接入流程相同。 mBannerView.setNativeAdCustomRender(new GgBaseActivity.NativeAdCustomRender(getActivity())); mBannerView.loadAd(); } private void addHfBannerViewToContainer() { if (mBannerViewContainer != null && mBannerView != null) { mBannerViewContainer.addView(mBannerView, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, mBannerViewContainer.getLayoutParams().height)); } } private ATShowConfig getHfBannerATShowConfig() { ATShowConfig.Builder builder = new ATShowConfig.Builder(); builder.scenarioId(AdConst.SCENARIO_ID.BANNER_AD_SCENARIO); builder.showCustomExt(AdConst.SHOW_CUSTOM_EXT.BANNER_AD_SHOW_CUSTOM_EXT); return builder.build(); } public int dip2px(float dipValue) { float scale = this.getResources().getDisplayMetrics().density; return (int) (dipValue * scale + 0.5f); } }这个frament页面是两个fragment页面复用,其中这段代码中setSelectAll方法adapter在另一页面复用该页面是为空
最新发布
10-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值