Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
Scan QR Code Barcode Reader
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Scan QR Code Barcode Reader
Commits
cbbc19f0
Commit
cbbc19f0
authored
Dec 31, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
ec4f099c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
116 additions
and
42 deletions
+116
-42
AdScanBean.kt
app/src/main/java/com/base/scanqr/bean/AdScanBean.kt
+7
-0
HistoryAdapter.kt
app/src/main/java/com/base/scanqr/ui/main/HistoryAdapter.kt
+66
-40
HistoryFragment.kt
app/src/main/java/com/base/scanqr/ui/main/HistoryFragment.kt
+6
-1
item_ad.xml
app/src/main/res/layout/item_ad.xml
+33
-0
item_history.xml
app/src/main/res/layout/item_history.xml
+4
-1
No files found.
app/src/main/java/com/base/scanqr/bean/AdScanBean.kt
0 → 100644
View file @
cbbc19f0
package
com.base.scanqr.bean
import
com.google.android.gms.ads.nativead.NativeAd
class
AdScanBean
:
ScanBean
(
"AD"
)
{
var
ad
:
NativeAd
?
=
null
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/ui/main/HistoryAdapter.kt
View file @
cbbc19f0
...
@@ -4,6 +4,8 @@ import android.content.Context
...
@@ -4,6 +4,8 @@ import android.content.Context
import
android.view.View
import
android.view.View
import
android.view.ViewGroup
import
android.view.ViewGroup
import
com.base.scanqr.R
import
com.base.scanqr.R
import
com.base.scanqr.ads.AdsMgr
import
com.base.scanqr.bean.AdScanBean
import
com.base.scanqr.bean.EmailUIBean
import
com.base.scanqr.bean.EmailUIBean
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_CONTACT
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_CONTACT
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EMAIL
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EMAIL
...
@@ -20,12 +22,14 @@ import com.base.scanqr.bean.ScanBean
...
@@ -20,12 +22,14 @@ import com.base.scanqr.bean.ScanBean
import
com.base.scanqr.bean.TextUIBean
import
com.base.scanqr.bean.TextUIBean
import
com.base.scanqr.bean.WebsiteUIBean
import
com.base.scanqr.bean.WebsiteUIBean
import
com.base.scanqr.bean.WifiUIBean
import
com.base.scanqr.bean.WifiUIBean
import
com.base.scanqr.databinding.ItemAdBinding
import
com.base.scanqr.databinding.ItemHistoryBinding
import
com.base.scanqr.databinding.ItemHistoryBinding
import
com.base.scanqr.ui.adapter.CommonViewHolder
import
com.base.scanqr.ui.adapter.CommonViewHolder
import
com.base.scanqr.utils.DateUtils.formatTimeAgo
import
com.base.scanqr.utils.DateUtils.formatTimeAgo
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.XmlEx.inflate
import
com.base.scanqr.utils.XmlEx.inflate
import
com.chad.library.adapter4.BaseQuickAdapter
import
com.chad.library.adapter4.BaseQuickAdapter
import
com.google.android.gms.ads.nativead.NativeAd
class
HistoryAdapter
:
BaseQuickAdapter
<
ScanBean
,
CommonViewHolder
>()
{
class
HistoryAdapter
:
BaseQuickAdapter
<
ScanBean
,
CommonViewHolder
>()
{
...
@@ -35,69 +39,91 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
...
@@ -35,69 +39,91 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
override
fun
onBindViewHolder
(
holder
:
CommonViewHolder
,
position
:
Int
,
item
:
ScanBean
?)
{
override
fun
onBindViewHolder
(
holder
:
CommonViewHolder
,
position
:
Int
,
item
:
ScanBean
?)
{
item
?:
return
item
?:
return
val
binding
=
ItemHistoryBinding
.
bind
(
holder
.
itemView
)
if
(
item
.
scanType
==
"AD"
)
{
LogEx
.
logDebug
(
TAG
,
"item.scanType=${item.scanType}"
)
val
binding
=
ItemAdBinding
.
bind
(
holder
.
itemView
)
when
(
item
.
scanType
)
{
if
(
item
is
AdScanBean
)
{
KEY_WIFI
->
{
if
(
item
.
ad
==
null
)
{
if
(
item
is
WifiUIBean
)
{
AdsMgr
.
showNative
(
binding
.
flAd
,
R
.
layout
.
layout_admob_item
,
nativeCallBack
=
{
ad
->
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_wifi
)
if
(
ad
is
NativeAd
)
{
LogEx
.
logDebug
(
TAG
,
"ad is NativeAd"
)
item
.
ad
=
ad
}
})
}
else
{
item
.
ad
?.
let
{
binding
.
flAd
.
setNativeAd
(
it
,
R
.
layout
.
layout_admob_item
)
}
}
}
}
}
}
else
{
val
binding
=
ItemHistoryBinding
.
bind
(
holder
.
itemView
)
LogEx
.
logDebug
(
TAG
,
"item.scanType=${item.scanType}"
)
when
(
item
.
scanType
)
{
KEY_WIFI
->
{
if
(
item
is
WifiUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_wifi
)
}
}
KEY_TEXT
->
{
KEY_TEXT
->
{
if
(
item
is
TextUIBean
)
{
if
(
item
is
TextUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_text
)
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_text
)
}
}
}
}
KEY_EMAIL
->
{
KEY_EMAIL
->
{
if
(
item
is
EmailUIBean
)
{
if
(
item
is
EmailUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_email
)
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_email
)
}
}
}
}
KEY_EVENT
->
{
KEY_EVENT
->
{
}
}
KEY_CONTACT
->
{
KEY_CONTACT
->
{
}
}
KEY_WEBSITE
->
{
KEY_WEBSITE
->
{
if
(
item
is
WebsiteUIBean
)
{
if
(
item
is
WebsiteUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_website
)
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_website
)
}
}
}
}
KEY_LOCATION
->
{
KEY_LOCATION
->
{
}
}
KEY_TELEPHONE
->
{
KEY_TELEPHONE
->
{
}
}
KEY_MESSAGE
->
{}
KEY_MESSAGE
->
{}
KEY_PRODUCT
->
{
KEY_PRODUCT
->
{
if
(
item
is
ProductUIBean
)
{
if
(
item
is
ProductUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_product
)
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_product
)
}
}
}
}
}
binding
.
tvDesc
.
text
=
item
.
listContent
binding
.
tvTime
.
text
=
formatTimeAgo
(
item
.
createTime
)
binding
.
flMore
.
setOnClickListener
{
moreAction
?.
invoke
(
it
,
item
)
}
binding
.
root
.
setOnClickListener
{
itemClick
?.
invoke
(
item
)
}
}
}
binding
.
tvDesc
.
text
=
item
.
listContent
}
binding
.
tvTime
.
text
=
formatTimeAgo
(
item
.
createTime
)
binding
.
flMore
.
setOnClickListener
{
override
fun
getItemViewType
(
position
:
Int
,
list
:
List
<
ScanBean
>):
Int
{
moreAction
?.
invoke
(
it
,
item
)
val
item
=
list
[
position
]
}
return
if
(
item
.
scanType
==
"AD"
)
0
else
1
binding
.
root
.
setOnClickListener
{
itemClick
?.
invoke
(
item
)
}
}
}
override
fun
onCreateViewHolder
(
context
:
Context
,
parent
:
ViewGroup
,
viewType
:
Int
):
CommonViewHolder
{
override
fun
onCreateViewHolder
(
context
:
Context
,
parent
:
ViewGroup
,
viewType
:
Int
):
CommonViewHolder
{
return
CommonViewHolder
(
R
.
layout
.
item_history
.
inflate
(
parent
))
val
id
=
if
(
viewType
==
0
)
R
.
layout
.
item_ad
else
R
.
layout
.
item_history
return
CommonViewHolder
(
id
.
inflate
(
parent
))
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/ui/main/HistoryFragment.kt
View file @
cbbc19f0
...
@@ -8,6 +8,7 @@ import androidx.core.view.updatePadding
...
@@ -8,6 +8,7 @@ import androidx.core.view.updatePadding
import
androidx.lifecycle.ViewModelProvider
import
androidx.lifecycle.ViewModelProvider
import
com.base.scanqr.R
import
com.base.scanqr.R
import
com.base.scanqr.base.BaseFragment
import
com.base.scanqr.base.BaseFragment
import
com.base.scanqr.bean.AdScanBean
import
com.base.scanqr.bean.FunctionUIBean
import
com.base.scanqr.bean.FunctionUIBean
import
com.base.scanqr.bean.ScanBean
import
com.base.scanqr.bean.ScanBean
import
com.base.scanqr.databinding.FragmentHistoryBinding
import
com.base.scanqr.databinding.FragmentHistoryBinding
...
@@ -166,7 +167,11 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind
...
@@ -166,7 +167,11 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind
val
qrState
=
if
(
isCreateOrScan
)
0
else
1
val
qrState
=
if
(
isCreateOrScan
)
0
else
1
val
createList
=
viewModel
.
historyList
.
filter
{
it
.
createType
==
qrState
}
val
createList
=
viewModel
.
historyList
.
filter
{
it
.
createType
==
qrState
}
binding
.
llEmpty
.
isVisible
=
createList
.
isEmpty
()
binding
.
llEmpty
.
isVisible
=
createList
.
isEmpty
()
adapter
?.
submitList
(
sortList
(
createList
))
val
sortList
=
sortList
(
createList
).
toMutableList
()
if
(
sortList
.
size
>
3
)
{
sortList
.
add
(
3
,
AdScanBean
())
}
adapter
?.
submitList
(
sortList
)
}
}
if
(
viewModel
.
dataRefreshFinish
.
get
())
{
if
(
viewModel
.
dataRefreshFinish
.
get
())
{
uiRefresh
.
invoke
()
uiRefresh
.
invoke
()
...
...
app/src/main/res/layout/item_ad.xml
0 → 100644
View file @
cbbc19f0
<?xml version="1.0" encoding="utf-8"?>
<com.base.scanqr.ads.NativeParentView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/fl_ad"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"16dp"
android:layout_marginVertical=
"8dp"
android:background=
"@drawable/bg_ecf6ff_20"
android:minHeight=
"133dp"
>
<io.supercharge.shimmerlayout.ShimmerLayout
android:id=
"@+id/shimmerLayout"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_marginHorizontal=
"16dp"
app:shimmer_angle=
"25"
app:shimmer_animation_duration=
"2000"
app:shimmer_auto_start=
"true"
app:shimmer_color=
"#33ffffff"
app:shimmer_mask_width=
"0.2"
>
<ImageView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@mipmap/czhanweitu"
tools:ignore=
"ContentDescription,ImageContrastCheck"
/>
</io.supercharge.shimmerlayout.ShimmerLayout>
</com.base.scanqr.ads.NativeParentView>
\ No newline at end of file
app/src/main/res/layout/item_history.xml
View file @
cbbc19f0
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android=
"http://schemas.android.com/apk/res/android"
<androidx.cardview.widget.CardView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"62dp"
android:layout_height=
"62dp"
android:layout_marginHorizontal=
"16dp"
android:layout_marginHorizontal=
"16dp"
android:layout_marginVertical=
"8dp"
>
android:layout_marginVertical=
"8dp"
app:cardBackgroundColor=
"@color/white"
app:cardCornerRadius=
"10dp"
>
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment