Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fallenstardust
YGOMobile
Commits
5f03ee56
Commit
5f03ee56
authored
Oct 06, 2021
by
kenan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SearchableListDialog
parent
cf816b81
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
113 additions
and
206 deletions
+113
-206
mobile/src/main/java/cn/garymb/ygomobile/ui/adapters/SimpleSpinnerItem.java
...va/cn/garymb/ygomobile/ui/adapters/SimpleSpinnerItem.java
+5
-2
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardSearcher.java
.../main/java/cn/garymb/ygomobile/ui/cards/CardSearcher.java
+4
-2
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
...c/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
+9
-6
mobile/src/main/java/cn/garymb/ygomobile/ui/widget/SearchableListDialog.java
...a/cn/garymb/ygomobile/ui/widget/SearchableListDialog.java
+59
-147
mobile/src/main/java/cn/garymb/ygomobile/ui/widget/SearchableSpinner.java
...java/cn/garymb/ygomobile/ui/widget/SearchableSpinner.java
+32
-49
mobile/src/main/res/values/colors.xml
mobile/src/main/res/values/colors.xml
+3
-0
mobile/src/main/res/values/strings.xml
mobile/src/main/res/values/strings.xml
+1
-0
No files found.
mobile/src/main/java/cn/garymb/ygomobile/ui/adapters/SimpleSpinnerItem.java
View file @
5f03ee56
package
cn.garymb.ygomobile.ui.adapters
;
package
cn.garymb.ygomobile.ui.adapters
;
import
androidx.annotation.NonNull
;
public
class
SimpleSpinnerItem
{
public
class
SimpleSpinnerItem
{
public
long
value
;
public
long
value
;
public
String
text
;
public
String
text
;
public
Object
tag
;
public
transient
Object
tag
;
public
SimpleSpinnerItem
(
long
value
,
String
text
)
{
public
SimpleSpinnerItem
(
long
value
,
String
text
)
{
this
.
value
=
value
;
this
.
value
=
value
;
...
@@ -20,8 +22,9 @@ public class SimpleSpinnerItem {
...
@@ -20,8 +22,9 @@ public class SimpleSpinnerItem {
return
this
;
return
this
;
}
}
@NonNull
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
return
text
;
return
""
+
text
;
}
}
}
}
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/CardSearcher.java
View file @
5f03ee56
...
@@ -26,6 +26,7 @@ import cn.garymb.ygomobile.ui.adapters.SimpleSpinnerAdapter;
...
@@ -26,6 +26,7 @@ import cn.garymb.ygomobile.ui.adapters.SimpleSpinnerAdapter;
import
cn.garymb.ygomobile.ui.adapters.SimpleSpinnerItem
;
import
cn.garymb.ygomobile.ui.adapters.SimpleSpinnerItem
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
cn.garymb.ygomobile.ui.widget.SearchableSpinner
;
import
ocgcore.DataManager
;
import
ocgcore.DataManager
;
import
ocgcore.LimitManager
;
import
ocgcore.LimitManager
;
import
ocgcore.StringManager
;
import
ocgcore.StringManager
;
...
@@ -55,7 +56,7 @@ public class CardSearcher implements View.OnClickListener {
...
@@ -55,7 +56,7 @@ public class CardSearcher implements View.OnClickListener {
private
final
Spinner
typeMonsterSpinner2
;
private
final
Spinner
typeMonsterSpinner2
;
private
final
Spinner
typeSpellSpinner
;
private
final
Spinner
typeSpellSpinner
;
private
final
Spinner
typeTrapSpinner
;
private
final
Spinner
typeTrapSpinner
;
private
final
Spinner
setCodeSpinner
;
private
final
S
earchableS
pinner
setCodeSpinner
;
private
final
Spinner
categorySpinner
;
private
final
Spinner
categorySpinner
;
private
final
Spinner
raceSpinner
;
private
final
Spinner
raceSpinner
;
private
final
Spinner
levelSpinner
;
private
final
Spinner
levelSpinner
;
...
@@ -120,6 +121,7 @@ public class CardSearcher implements View.OnClickListener {
...
@@ -120,6 +121,7 @@ public class CardSearcher implements View.OnClickListener {
resetButton
.
setOnClickListener
(
this
);
resetButton
.
setOnClickListener
(
this
);
mCardLoader
=
dataLoader
;
mCardLoader
=
dataLoader
;
// setCodeSpinner.setFirstIndex(1);
OnEditorActionListener
searchListener
=
(
v
,
actionId
,
event
)
->
{
OnEditorActionListener
searchListener
=
(
v
,
actionId
,
event
)
->
{
if
(
actionId
==
EditorInfo
.
IME_ACTION_SEARCH
)
{
if
(
actionId
==
EditorInfo
.
IME_ACTION_SEARCH
)
{
InputMethodManager
imm
=
(
InputMethodManager
)
mContext
.
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
);
InputMethodManager
imm
=
(
InputMethodManager
)
mContext
.
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
);
...
@@ -439,7 +441,7 @@ public class CardSearcher implements View.OnClickListener {
...
@@ -439,7 +441,7 @@ public class CardSearcher implements View.OnClickListener {
private
void
initSetNameSpinners
(
Spinner
spinner
)
{
private
void
initSetNameSpinners
(
Spinner
spinner
)
{
List
<
CardSet
>
setnames
=
mStringManager
.
getCardSets
();
List
<
CardSet
>
setnames
=
mStringManager
.
getCardSets
();
List
<
SimpleSpinnerItem
>
items
=
new
ArrayList
<>();
List
<
SimpleSpinnerItem
>
items
=
new
ArrayList
<>();
items
.
add
(
new
SimpleSpinnerItem
(
0
,
getString
(
R
.
string
.
label_set
)));
items
.
add
(
new
SimpleSpinnerItem
(
0
,
mContext
.
getString
(
R
.
string
.
label_set
)));
for
(
CardSet
set
:
setnames
)
{
for
(
CardSet
set
:
setnames
)
{
items
.
add
(
new
SimpleSpinnerItem
(
set
.
getCode
(),
set
.
getName
()));
items
.
add
(
new
SimpleSpinnerItem
(
set
.
getCode
(),
set
.
getName
()));
}
}
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
View file @
5f03ee56
...
@@ -142,12 +142,15 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
...
@@ -142,12 +142,15 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
};
};
//x5内核初始化接口
//x5内核初始化接口
QbSdk
.
initX5Environment
(
this
,
cb
);
QbSdk
.
initX5Environment
(
this
,
cb
);
if
(!
Constants
.
ACTION_OPEN_GAME
.
equals
(
getIntent
().
getAction
()))
{
if
(!
BuildConfig
.
BUILD_TYPE
.
equals
(
"debug"
))
{
Log
.
d
(
Constants
.
TAG
,
"start check update"
);
//release才检查版本
//check update
if
(!
Constants
.
ACTION_OPEN_GAME
.
equals
(
getIntent
().
getAction
()))
{
Beta
.
checkUpgrade
(
false
,
false
);
Log
.
d
(
Constants
.
TAG
,
"start check update"
);
}
else
{
//check update
Log
.
d
(
Constants
.
TAG
,
"skip check update"
);
Beta
.
checkUpgrade
(
false
,
false
);
}
else
{
Log
.
d
(
Constants
.
TAG
,
"skip check update"
);
}
}
}
//初始化决斗助手
//初始化决斗助手
initDuelAssistant
();
initDuelAssistant
();
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/widget/SearchableListDialog.java
View file @
5f03ee56
package
cn.garymb.ygomobile.ui.widget
;
package
cn.garymb.ygomobile.ui.widget
;
import
android.app.Dialog
;
import
android.app.Activity
;
import
android.app.DialogFragment
;
import
android.app.SearchManager
;
import
android.app.SearchManager
;
import
android.content.Context
;
import
android.content.Context
;
import
android.content.DialogInterface
;
import
android.graphics.Color
;
import
android.os.Bundle
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.view.WindowManager
;
import
android.view.WindowManager
;
import
android.view.inputmethod.InputMethodManager
;
import
android.view.inputmethod.InputMethodManager
;
import
android.widget.AdapterView
;
import
android.widget.ArrayAdapter
;
import
android.widget.ArrayAdapter
;
import
android.widget.ListView
;
import
android.widget.ListView
;
import
android.widget.SearchView
;
import
android.widget.SearchView
;
import
android.widget.TextView
;
import
android.widget.TextView
;
import
java.
io.Serializable
;
import
java.
util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
public
class
SearchableListDialog
extends
Dialog
Fragment
implements
public
class
SearchableListDialog
extends
Dialog
Plus
implements
SearchView
.
OnQueryTextListener
,
SearchView
.
OnCloseListener
{
SearchView
.
OnQueryTextListener
,
SearchView
.
OnCloseListener
{
private
static
final
String
ITEMS
=
"items"
;
private
final
ArrayAdapter
<
Object
>
listAdapter
;
private
onSearchItemClickListener
_onSearchItemClickListener
;
private
ArrayAdapter
listAdapter
;
private
ListView
_listViewItems
;
private
SearchableItem
_searchableItem
;
private
OnSearchTextChanged
_onSearchTextChanged
;
private
OnSearchTextChanged
_onSearchTextChanged
;
private
final
SearchView
_searchView
;
private
final
List
<
Object
>
items
=
new
ArrayList
<>();
private
SearchView
_searchView
;
public
SearchableListDialog
(
Context
context
)
{
super
(
context
);
private
String
_strTitle
;
LayoutInflater
inflater
=
LayoutInflater
.
from
(
context
);
private
String
_strPositiveButtonText
;
private
DialogInterface
.
OnClickListener
_onClickListener
;
public
SearchableListDialog
()
{
}
public
static
SearchableListDialog
newInstance
(
List
items
)
{
SearchableListDialog
multiSelectExpandableFragment
=
new
SearchableListDialog
();
Bundle
args
=
new
Bundle
();
args
.
putSerializable
(
ITEMS
,
(
Serializable
)
items
);
multiSelectExpandableFragment
.
setArguments
(
args
);
return
multiSelectExpandableFragment
;
}
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
}
@Override
public
View
onCreateView
(
LayoutInflater
inflater
,
ViewGroup
container
,
Bundle
savedInstanceState
)
{
getDialog
().
getWindow
().
setSoftInputMode
(
WindowManager
.
LayoutParams
.
SOFT_INPUT_STATE_HIDDEN
);
return
super
.
onCreateView
(
inflater
,
container
,
savedInstanceState
);
}
@Override
public
Dialog
onCreateDialog
(
Bundle
savedInstanceState
)
{
// Getting the layout inflater to inflate the view in an alert dialog.
LayoutInflater
inflater
=
LayoutInflater
.
from
(
getActivity
());
// Crash on orientation change #7
// Change Start
// Description: As the instance was re initializing to null on rotating the device,
// getting the instance from the saved instance
if
(
null
!=
savedInstanceState
)
{
_searchableItem
=
(
SearchableItem
)
savedInstanceState
.
getSerializable
(
"item"
);
}
// Change End
View
rootView
=
inflater
.
inflate
(
R
.
layout
.
searchable_list_dialog
,
null
);
View
rootView
=
inflater
.
inflate
(
R
.
layout
.
searchable_list_dialog
,
null
);
setData
(
rootView
);
SearchManager
searchManager
=
(
SearchManager
)
context
.
getSystemService
(
Context
.
SEARCH_SERVICE
);
DialogPlus
alertDialog
=
new
DialogPlus
(
getActivity
());
alertDialog
.
setContentView
(
rootView
);
alertDialog
.
hideButton
();
String
strTitle
=
_strTitle
==
null
?
"Select Item"
:
_strTitle
;
alertDialog
.
setTitle
(
strTitle
);
alertDialog
.
show
();
alertDialog
.
getWindow
().
setSoftInputMode
(
WindowManager
.
LayoutParams
.
SOFT_INPUT_STATE_HIDDEN
);
return
alertDialog
;
}
// Crash on orientation change #7
// Change Start
// Description: Saving the instance of searchable item instance.
@Override
public
void
onSaveInstanceState
(
Bundle
outState
)
{
outState
.
putSerializable
(
"item"
,
_searchableItem
);
super
.
onSaveInstanceState
(
outState
);
}
// Change End
public
void
setTitle
(
String
strTitle
)
{
_strTitle
=
strTitle
;
}
public
void
setPositiveButton
(
String
strPositiveButtonText
)
{
_strPositiveButtonText
=
strPositiveButtonText
;
}
public
void
setPositiveButton
(
String
strPositiveButtonText
,
DialogInterface
.
OnClickListener
onClickListener
)
{
_strPositiveButtonText
=
strPositiveButtonText
;
_onClickListener
=
onClickListener
;
}
public
void
setOnSearchableItemClickListener
(
SearchableItem
searchableItem
)
{
this
.
_searchableItem
=
searchableItem
;
}
public
void
setOnSearchTextChangedListener
(
OnSearchTextChanged
onSearchTextChanged
)
{
this
.
_onSearchTextChanged
=
onSearchTextChanged
;
}
private
void
setData
(
View
rootView
)
{
SearchManager
searchManager
=
(
SearchManager
)
getActivity
().
getSystemService
(
Context
.
SEARCH_SERVICE
);
_searchView
=
(
SearchView
)
rootView
.
findViewById
(
R
.
id
.
search
);
_searchView
=
(
SearchView
)
rootView
.
findViewById
(
R
.
id
.
search
);
_searchView
.
setSearchableInfo
(
searchManager
.
getSearchableInfo
(
getActivity
().
getComponentName
if
(
context
instanceof
Activity
)
{
()));
_searchView
.
setSearchableInfo
(
searchManager
.
getSearchableInfo
(((
Activity
)
context
).
getComponentName
()));
}
_searchView
.
setIconifiedByDefault
(
false
);
_searchView
.
setIconifiedByDefault
(
false
);
_searchView
.
setOnQueryTextListener
(
this
);
_searchView
.
setOnQueryTextListener
(
this
);
_searchView
.
setOnCloseListener
(
this
);
_searchView
.
setOnCloseListener
(
this
);
_searchView
.
clearFocus
();
_searchView
.
clearFocus
();
int
id
=
_searchView
.
getContext
().
getResources
().
getIdentifier
(
"android:id/search_src_text"
,
null
,
null
);
int
id
=
_searchView
.
getContext
().
getResources
().
getIdentifier
(
"android:id/search_src_text"
,
null
,
null
);
TextView
textView1
=
(
TextView
)
_searchView
.
findViewById
(
id
);
TextView
textView1
=
(
TextView
)
_searchView
.
findViewById
(
id
);
textView1
.
setTextColor
(
Color
.
parseColor
(
"#ff8800"
));
if
(
textView1
!=
null
)
{
InputMethodManager
mgr
=
(
InputMethodManager
)
getActivity
().
getSystemService
(
Context
textView1
.
setTextColor
(
getContext
().
getResources
().
getColor
(
R
.
color
.
search_text_color
));
.
INPUT_METHOD_SERVICE
);
}
mgr
.
hideSoftInputFromWindow
(
_searchView
.
getWindowToken
(),
0
);
ListView
_listViewItems
=
(
ListView
)
rootView
.
findViewById
(
R
.
id
.
listItems
);
List
items
=
(
List
)
getArguments
().
getSerializable
(
ITEMS
);
_listViewItems
=
(
ListView
)
rootView
.
findViewById
(
R
.
id
.
listItems
);
//create the adapter by passing your ArrayList data
listAdapter
=
new
ArrayAdapter
<
Object
>(
context
,
android
.
R
.
layout
.
simple_list_item_1
,
items
)
{
/*listAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1,
items);*/
listAdapter
=
new
ArrayAdapter
<
String
>(
getActivity
(),
android
.
R
.
layout
.
simple_list_item_1
,
items
)
{
@Override
@Override
public
View
getView
(
int
position
,
View
convertView
,
ViewGroup
parent
)
{
public
View
getView
(
int
position
,
View
convertView
,
ViewGroup
parent
)
{
TextView
textView
=
(
TextView
)
super
.
getView
(
position
,
convertView
,
parent
);
TextView
textView
=
(
TextView
)
super
.
getView
(
position
,
convertView
,
parent
);
textView
.
setTextColor
(
Color
.
parseColor
(
"#b8be35"
));
textView
.
setTextColor
(
getContext
().
getResources
().
getColor
(
R
.
color
.
search_list_item_color
));
return
textView
;
return
textView
;
}
}
};
};
//attach the adapter to the list
//attach the adapter to the list
_listViewItems
.
setAdapter
(
listAdapter
);
_listViewItems
.
setAdapter
(
listAdapter
);
_listViewItems
.
setTextFilterEnabled
(
true
);
_listViewItems
.
setTextFilterEnabled
(
true
);
_listViewItems
.
setOnItemClickListener
((
parent
,
view
,
position
,
id1
)
->
{
_listViewItems
.
setOnItemClickListener
(
new
AdapterView
.
OnItemClickListener
()
{
if
(
_onSearchItemClickListener
!=
null
)
{
@Override
_onSearchItemClickListener
.
onSearchableItemClicked
(
listAdapter
.
getItem
(
position
),
position
);
public
void
onItemClick
(
AdapterView
<?>
parent
,
View
view
,
int
position
,
long
id
)
{
_searchableItem
.
onSearchableItemClicked
(
listAdapter
.
getItem
(
position
),
position
);
getDialog
().
dismiss
();
}
}
this
.
dismiss
();
});
});
setContentView
(
rootView
);
hideButton
();
}
@Override
public
void
show
()
{
super
.
show
();
getWindow
().
setSoftInputMode
(
WindowManager
.
LayoutParams
.
SOFT_INPUT_STATE_HIDDEN
);
}
public
void
show
(
List
<
Object
>
items
){
//隐藏输入法
InputMethodManager
mgr
=
(
InputMethodManager
)
getContext
().
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
);
mgr
.
hideSoftInputFromWindow
(
_searchView
.
getWindowToken
(),
0
);
//设置列表
this
.
items
.
clear
();
this
.
items
.
addAll
(
items
);
listAdapter
.
notifyDataSetChanged
();
show
();
}
public
void
setOnSearchableItemClickListener
(
onSearchItemClickListener
onSearchItemClickListener
)
{
this
.
_onSearchItemClickListener
=
onSearchItemClickListener
;
}
public
void
setOnSearchTextChangedListener
(
OnSearchTextChanged
onSearchTextChanged
)
{
this
.
_onSearchTextChanged
=
onSearchTextChanged
;
}
}
@Override
@Override
...
@@ -198,12 +112,10 @@ public class SearchableListDialog extends DialogFragment implements
...
@@ -198,12 +112,10 @@ public class SearchableListDialog extends DialogFragment implements
@Override
@Override
public
boolean
onQueryTextChange
(
String
s
)
{
public
boolean
onQueryTextChange
(
String
s
)
{
// listAdapter.filterData(s);
if
(
TextUtils
.
isEmpty
(
s
))
{
if
(
TextUtils
.
isEmpty
(
s
))
{
// _listViewItems.clearTextFilter();
listAdapter
.
getFilter
().
filter
(
null
);
((
ArrayAdapter
)
_listViewItems
.
getAdapter
()).
getFilter
().
filter
(
null
);
}
else
{
}
else
{
((
ArrayAdapter
)
_listViewItems
.
getAdapter
())
.
getFilter
().
filter
(
s
);
listAdapter
.
getFilter
().
filter
(
s
);
}
}
if
(
null
!=
_onSearchTextChanged
)
{
if
(
null
!=
_onSearchTextChanged
)
{
_onSearchTextChanged
.
onSearchTextChanged
(
s
);
_onSearchTextChanged
.
onSearchTextChanged
(
s
);
...
@@ -211,8 +123,8 @@ public class SearchableListDialog extends DialogFragment implements
...
@@ -211,8 +123,8 @@ public class SearchableListDialog extends DialogFragment implements
return
true
;
return
true
;
}
}
public
interface
SearchableItem
<
T
>
extends
Serializable
{
public
interface
onSearchItemClickListener
{
void
onSearchableItemClicked
(
T
item
,
int
position
);
void
onSearchableItemClicked
(
Object
item
,
int
position
);
}
}
public
interface
OnSearchTextChanged
{
public
interface
OnSearchTextChanged
{
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/widget/SearchableSpinner.java
View file @
5f03ee56
...
@@ -3,7 +3,6 @@ package cn.garymb.ygomobile.ui.widget;
...
@@ -3,7 +3,6 @@ package cn.garymb.ygomobile.ui.widget;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.Context
;
import
android.content.ContextWrapper
;
import
android.content.ContextWrapper
;
import
android.content.DialogInterface
;
import
android.content.res.TypedArray
;
import
android.content.res.TypedArray
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.util.AttributeSet
;
import
android.util.AttributeSet
;
...
@@ -16,88 +15,81 @@ import android.widget.SpinnerAdapter;
...
@@ -16,88 +15,81 @@ import android.widget.SpinnerAdapter;
import
androidx.appcompat.widget.AppCompatSpinner
;
import
androidx.appcompat.widget.AppCompatSpinner
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.lite.R
;
public
class
SearchableSpinner
extends
AppCompatSpinner
implements
View
.
OnTouchListener
,
public
class
SearchableSpinner
extends
AppCompatSpinner
implements
View
.
OnTouchListener
,
SearchableListDialog
.
SearchableItem
{
SearchableListDialog
.
onSearchItemClickListener
{
public
static
final
int
NO_ITEM_SELECTED
=
-
1
;
public
static
final
int
NO_ITEM_SELECTED
=
-
1
;
private
Context
_context
;
private
List
_items
;
private
SearchableListDialog
_searchableListDialog
;
private
SearchableListDialog
_searchableListDialog
;
private
final
ArrayList
<
Object
>
_items
=
new
ArrayList
<>();
private
boolean
_isDirty
;
private
boolean
_isDirty
;
private
BaseAdapter
_arrayAdapter
;
private
BaseAdapter
_arrayAdapter
;
private
String
_strHintText
;
private
String
_strHintText
;
private
boolean
_isFromInit
;
private
boolean
_isFromInit
;
private
String
mTitleString
=
"Select Item"
;
private
String
mTitleString
=
"Select Item"
;
private
int
mFirstIndex
=
0
;
public
SearchableSpinner
(
Context
context
)
{
public
SearchableSpinner
(
Context
context
)
{
super
(
context
);
this
(
context
,
null
);
this
.
_context
=
context
;
init
();
}
}
public
SearchableSpinner
(
Context
context
,
AttributeSet
attrs
)
{
public
SearchableSpinner
(
Context
context
,
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
this
(
context
,
attrs
,
0
);
this
.
_context
=
context
;
TypedArray
a
=
context
.
obtainStyledAttributes
(
attrs
,
R
.
styleable
.
SearchableSpinner
);
final
int
N
=
a
.
getIndexCount
();
for
(
int
i
=
0
;
i
<
N
;
++
i
)
{
int
attr
=
a
.
getIndex
(
i
);
if
(
attr
==
R
.
styleable
.
SearchableSpinner_hintText
)
{
_strHintText
=
a
.
getString
(
attr
);
}
else
if
(
attr
==
R
.
styleable
.
SearchableSpinner_searchTitle
)
{
mTitleString
=
a
.
getString
(
attr
);
}
}
a
.
recycle
();
init
();
}
}
public
SearchableSpinner
(
Context
context
,
AttributeSet
attrs
,
int
defStyleAttr
)
{
public
SearchableSpinner
(
Context
context
,
AttributeSet
attrs
,
int
defStyleAttr
)
{
super
(
context
,
attrs
,
defStyleAttr
);
super
(
context
,
attrs
,
defStyleAttr
);
this
.
_context
=
context
;
TypedArray
a
=
context
.
obtainStyledAttributes
(
attrs
,
R
.
styleable
.
SearchableSpinner
);
if
(
a
!=
null
)
{
final
int
N
=
a
.
getIndexCount
();
for
(
int
i
=
0
;
i
<
N
;
++
i
)
{
int
attr
=
a
.
getIndex
(
i
);
if
(
attr
==
R
.
styleable
.
SearchableSpinner_hintText
)
{
_strHintText
=
a
.
getString
(
attr
);
}
else
if
(
attr
==
R
.
styleable
.
SearchableSpinner_searchTitle
)
{
mTitleString
=
a
.
getString
(
attr
);
}
}
a
.
recycle
();
}
init
();
init
();
}
}
private
void
init
()
{
private
void
init
()
{
_items
=
new
ArrayList
();
_searchableListDialog
=
new
SearchableListDialog
(
getContext
());
_searchableListDialog
=
SearchableListDialog
.
newInstance
(
_items
);
_searchableListDialog
.
setTitle
(
mTitleString
);
_searchableListDialog
.
setTitle
(
mTitleString
);
_searchableListDialog
.
setOnSearchableItemClickListener
(
this
);
_searchableListDialog
.
setOnSearchableItemClickListener
(
this
);
setOnTouchListener
(
this
);
setOnTouchListener
(
this
);
_arrayAdapter
=
(
BaseAdapter
)
getAdapter
();
_arrayAdapter
=
(
BaseAdapter
)
getAdapter
();
if
(!
TextUtils
.
isEmpty
(
_strHintText
))
{
if
(!
TextUtils
.
isEmpty
(
_strHintText
))
{
ArrayAdapter
arrayAdapter
=
new
ArrayAdapter
(
_context
,
android
.
R
.
layout
ArrayAdapter
<
String
>
arrayAdapter
=
new
ArrayAdapter
<>(
getContext
(),
.
simple_list_item_1
,
new
String
[]{
_strHintText
});
android
.
R
.
layout
.
simple_list_item_1
,
new
String
[]{
_strHintText
});
_isFromInit
=
true
;
_isFromInit
=
true
;
setAdapter
(
arrayAdapter
);
setAdapter
(
arrayAdapter
);
}
}
}
}
public
void
setFirstIndex
(
int
firstIndex
)
{
this
.
mFirstIndex
=
firstIndex
;
}
@Override
@Override
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
if
(
event
.
getAction
()
==
MotionEvent
.
ACTION_UP
)
{
if
(
event
.
getAction
()
==
MotionEvent
.
ACTION_UP
)
{
if
(
null
!=
_arrayAdapter
)
{
if
(
null
!=
_arrayAdapter
)
{
// Refresh content #6
// Change Start
// Description: The items were only set initially, not reloading the data in the
// spinner every time it is loaded with items in the adapter.
// Change end.
//修复 重复点击 bug
//修复 重复点击 bug
if
(!
_searchableListDialog
.
isAdded
())
{
if
(!
_searchableListDialog
.
isShowing
())
{
_items
.
clear
();
_items
.
clear
();
for
(
int
i
=
0
;
i
<
_arrayAdapter
.
getCount
();
i
++)
{
int
N
=
_arrayAdapter
.
getCount
();
for
(
int
i
=
mFirstIndex
;
i
<
N
;
i
++)
{
_items
.
add
(
_arrayAdapter
.
getItem
(
i
));
_items
.
add
(
_arrayAdapter
.
getItem
(
i
));
}
}
_searchableListDialog
.
show
(
scanForActivity
(
_context
).
getFragmentManager
(),
"TAG"
);
_searchableListDialog
.
show
(
_items
);
}
}
}
}
}
}
...
@@ -109,7 +101,7 @@ public class SearchableSpinner extends AppCompatSpinner implements View.OnTouchL
...
@@ -109,7 +101,7 @@ public class SearchableSpinner extends AppCompatSpinner implements View.OnTouchL
if
(!
_isFromInit
)
{
if
(!
_isFromInit
)
{
_arrayAdapter
=
(
BaseAdapter
)
adapter
;
_arrayAdapter
=
(
BaseAdapter
)
adapter
;
if
(!
TextUtils
.
isEmpty
(
_strHintText
)
&&
!
_isDirty
)
{
if
(!
TextUtils
.
isEmpty
(
_strHintText
)
&&
!
_isDirty
)
{
ArrayAdapter
arrayAdapter
=
new
ArrayAdapter
(
_context
,
android
.
R
.
layout
ArrayAdapter
<
String
>
arrayAdapter
=
new
ArrayAdapter
<>(
getContext
()
,
android
.
R
.
layout
.
simple_list_item_1
,
new
String
[]{
_strHintText
});
.
simple_list_item_1
,
new
String
[]{
_strHintText
});
super
.
setAdapter
(
arrayAdapter
);
super
.
setAdapter
(
arrayAdapter
);
}
else
{
}
else
{
...
@@ -124,8 +116,7 @@ public class SearchableSpinner extends AppCompatSpinner implements View.OnTouchL
...
@@ -124,8 +116,7 @@ public class SearchableSpinner extends AppCompatSpinner implements View.OnTouchL
@Override
@Override
public
void
onSearchableItemClicked
(
Object
item
,
int
position
)
{
public
void
onSearchableItemClicked
(
Object
item
,
int
position
)
{
setSelection
(
_items
.
indexOf
(
item
));
setSelection
(
_items
.
indexOf
(
item
)
+
mFirstIndex
);
if
(!
_isDirty
)
{
if
(!
_isDirty
)
{
_isDirty
=
true
;
_isDirty
=
true
;
setAdapter
(
_arrayAdapter
);
setAdapter
(
_arrayAdapter
);
...
@@ -137,14 +128,6 @@ public class SearchableSpinner extends AppCompatSpinner implements View.OnTouchL
...
@@ -137,14 +128,6 @@ public class SearchableSpinner extends AppCompatSpinner implements View.OnTouchL
_searchableListDialog
.
setTitle
(
strTitle
);
_searchableListDialog
.
setTitle
(
strTitle
);
}
}
public
void
setPositiveButton
(
String
strPositiveButtonText
)
{
_searchableListDialog
.
setPositiveButton
(
strPositiveButtonText
);
}
public
void
setPositiveButton
(
String
strPositiveButtonText
,
DialogInterface
.
OnClickListener
onClickListener
)
{
_searchableListDialog
.
setPositiveButton
(
strPositiveButtonText
,
onClickListener
);
}
public
void
setOnSearchTextChangedListener
(
SearchableListDialog
.
OnSearchTextChanged
onSearchTextChanged
)
{
public
void
setOnSearchTextChangedListener
(
SearchableListDialog
.
OnSearchTextChanged
onSearchTextChanged
)
{
_searchableListDialog
.
setOnSearchTextChangedListener
(
onSearchTextChanged
);
_searchableListDialog
.
setOnSearchTextChangedListener
(
onSearchTextChanged
);
}
}
...
...
mobile/src/main/res/values/colors.xml
View file @
5f03ee56
...
@@ -29,4 +29,7 @@
...
@@ -29,4 +29,7 @@
<color
name=
"colorMain"
>
#2196F3
</color>
<color
name=
"colorMain"
>
#2196F3
</color>
<color
name=
"background"
>
#ECEFF1
</color>
<color
name=
"background"
>
#ECEFF1
</color>
<color
name=
"transparent"
>
#00000000
</color>
<color
name=
"transparent"
>
#00000000
</color>
<color
name=
"search_text_color"
>
#ff8800
</color>
<color
name=
"search_list_item_color"
>
#b8be35
</color>
</resources>
</resources>
\ No newline at end of file
mobile/src/main/res/values/strings.xml
View file @
5f03ee56
...
@@ -328,4 +328,5 @@
...
@@ -328,4 +328,5 @@
<string
name=
"label_ot_SC_OCG"
>
SChinese OCG
</string>
<string
name=
"label_ot_SC_OCG"
>
SChinese OCG
</string>
<string
name=
"settings_screen_padding"
>
Reserved height of curved screen
</string>
<string
name=
"settings_screen_padding"
>
Reserved height of curved screen
</string>
<string
name=
"tip_load_cdb_error"
>
加载数据出错
</string>
<string
name=
"tip_load_cdb_error"
>
加载数据出错
</string>
<string
name=
"text_none"
translatable=
"false"
>
N/A
</string>
</resources>
</resources>
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