使用共享首选项在此处单击我的卡片视图后,如何设置 Enabled false
how can i set Enabled false after one click on my card view here using shared preferences
在我的应用程序中实现了共享首选项,在单击 cardview 后应该无法再次单击它已经完成了保持 cardview 颜色和文本颜色的部分,但不幸的是您仍然可以单击 cardview,单击后,我也想使用共享首选项禁用它。
换句话说,在单击一次后禁用单击并使用共享首选项保存该状态,希望避免多次单击
这是我的代码
mPreferences = PreferenceManager.getDefaultSharedPreferences (getContext ());
mEditor = mPreferences.edit ();
checkSharedPreferences ();
//save the cardview preference
if(cardView.isEnabled ())
{
//set a cardview state
mEditor.putString (getString (R.string.cardviewsnal),"true");
//disabling the button after one click
mEditor.commit ();
//save the color of the cardview
mEditor.putString (getString (R.string.colorCardview),"#2b43f");
mEditor.commit ();
//save the textcolor pf the cardview
mEditor.putString (getString (R.string.textcolorsnal),"#ffffff");
mEditor.commit ();
} else
{
//set a cardview state
mEditor.putString (getString (R.string.cardviewsnal),"false");
//disabling the button after one click
cardView.setEnabled (false);
mEditor.commit ();
//save the color of the cardview
mEditor.putString (getString (R.string.colorCardview),"#ffffff");
mEditor.commit ();
//save the textcolor pf the cardview
mEditor.putString (getString (R.string.textcolorsnal),"#2b434f");
mEditor.commit ();
}
//setting the click listener to send the request to specific section api anf return response
cardView.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick(View v) {
if(cardView.getCardBackgroundColor ().getDefaultColor () ==-1 || textView.getTextColors ().getDefaultColor () ==-1)
{
//change background color
cardView.setCardBackgroundColor (Color.parseColor ("#2b434f"));
textView.setTextColor (Color.parseColor ("#ffffff"));
Toast.makeText (getActivity (),"Request Sent to SNAL",Toast.LENGTH_LONG).show ();
cardView.setEnabled (false);
}
else {
cardView.setCardBackgroundColor (Color.parseColor ("#ffffff"));
textView.setTextColor (Color.parseColor ("#2b434f"));
}
}
});
/**
* *Check the shared preferences and set them accordingly
*/
private void checkSharedPreferences()
{
String cardviewsnal = mPreferences.getString (getString (R.string.cardviewsnal),"false");
String colorCardview = mPreferences.getString (getString (R.string.colorCardview),"#ffffff");
String textcolorsnal = mPreferences.getString (getString (R.string.textcolorsnal),"#2b434f");
if(cardviewsnal.equals ("false")){
cardView.setEnabled (true);
}
else
{
cardView.setEnabled (true);
}
if(colorCardview.equals ("#ffffff"))
{
cardView.setCardBackgroundColor (Color.parseColor ("#ffffff"));
}
else
{
cardView.setCardBackgroundColor (Color.parseColor ("#2b434f"));
}
if(textcolorsnal.equals ("#2b434f"))
{
textView.setTextColor (Color.parseColor ("#2b434f"));
}
else {
textView.setTextColor (Color.parseColor ("#ffffff"));
}
}
您可以简单地编辑 onClickListener 中的 onClick 方法:
@Override
public void onClick(View v) {
if(cardView.isEnabled()) {
cardView.setEnabled(false);
// do other things like writing to SharedPreferences and changing bg colors.
} else {
// set background colors
cardView.setCardBackgroundColor (Color.parseColor ("#ffffff"));
textView.setTextColor (Color.parseColor ("#2b434f"));
}
}
我认为这会奏效。另外,如果 cardView 已在您的 checkPreferences 方法中从内存中读取,您的意思是将其设置为禁用吗?
if(cardviewsnal.equals ("false")){
cardView.setEnabled (false); // was cardView.setEnabled(true) in your code
}
在我的应用程序中实现了共享首选项,在单击 cardview 后应该无法再次单击它已经完成了保持 cardview 颜色和文本颜色的部分,但不幸的是您仍然可以单击 cardview,单击后,我也想使用共享首选项禁用它。 换句话说,在单击一次后禁用单击并使用共享首选项保存该状态,希望避免多次单击
这是我的代码
mPreferences = PreferenceManager.getDefaultSharedPreferences (getContext ());
mEditor = mPreferences.edit ();
checkSharedPreferences ();
//save the cardview preference
if(cardView.isEnabled ())
{
//set a cardview state
mEditor.putString (getString (R.string.cardviewsnal),"true");
//disabling the button after one click
mEditor.commit ();
//save the color of the cardview
mEditor.putString (getString (R.string.colorCardview),"#2b43f");
mEditor.commit ();
//save the textcolor pf the cardview
mEditor.putString (getString (R.string.textcolorsnal),"#ffffff");
mEditor.commit ();
} else
{
//set a cardview state
mEditor.putString (getString (R.string.cardviewsnal),"false");
//disabling the button after one click
cardView.setEnabled (false);
mEditor.commit ();
//save the color of the cardview
mEditor.putString (getString (R.string.colorCardview),"#ffffff");
mEditor.commit ();
//save the textcolor pf the cardview
mEditor.putString (getString (R.string.textcolorsnal),"#2b434f");
mEditor.commit ();
}
//setting the click listener to send the request to specific section api anf return response
cardView.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick(View v) {
if(cardView.getCardBackgroundColor ().getDefaultColor () ==-1 || textView.getTextColors ().getDefaultColor () ==-1)
{
//change background color
cardView.setCardBackgroundColor (Color.parseColor ("#2b434f"));
textView.setTextColor (Color.parseColor ("#ffffff"));
Toast.makeText (getActivity (),"Request Sent to SNAL",Toast.LENGTH_LONG).show ();
cardView.setEnabled (false);
}
else {
cardView.setCardBackgroundColor (Color.parseColor ("#ffffff"));
textView.setTextColor (Color.parseColor ("#2b434f"));
}
}
});
/**
* *Check the shared preferences and set them accordingly
*/
private void checkSharedPreferences()
{
String cardviewsnal = mPreferences.getString (getString (R.string.cardviewsnal),"false");
String colorCardview = mPreferences.getString (getString (R.string.colorCardview),"#ffffff");
String textcolorsnal = mPreferences.getString (getString (R.string.textcolorsnal),"#2b434f");
if(cardviewsnal.equals ("false")){
cardView.setEnabled (true);
}
else
{
cardView.setEnabled (true);
}
if(colorCardview.equals ("#ffffff"))
{
cardView.setCardBackgroundColor (Color.parseColor ("#ffffff"));
}
else
{
cardView.setCardBackgroundColor (Color.parseColor ("#2b434f"));
}
if(textcolorsnal.equals ("#2b434f"))
{
textView.setTextColor (Color.parseColor ("#2b434f"));
}
else {
textView.setTextColor (Color.parseColor ("#ffffff"));
}
}
您可以简单地编辑 onClickListener 中的 onClick 方法:
@Override
public void onClick(View v) {
if(cardView.isEnabled()) {
cardView.setEnabled(false);
// do other things like writing to SharedPreferences and changing bg colors.
} else {
// set background colors
cardView.setCardBackgroundColor (Color.parseColor ("#ffffff"));
textView.setTextColor (Color.parseColor ("#2b434f"));
}
}
我认为这会奏效。另外,如果 cardView 已在您的 checkPreferences 方法中从内存中读取,您的意思是将其设置为禁用吗?
if(cardviewsnal.equals ("false")){
cardView.setEnabled (false); // was cardView.setEnabled(true) in your code
}