【发布时间】:2019-06-06 17:24:02
【问题描述】:
我有一个 PreferenceScreen 用于保存一些参数,并且我想使用此参数来更改位于应用程序其他位置的我的 recyclerview 的所有元素的视觉效果。
我不知道在创建元素时如何或在何处放置这些值以设置此首选项。
Recycler 的所有元素都包含在带有一些 Textview 的水平线性布局中;我想更改布局的背景颜色和文本视图的文本颜色(使用首选项值)
我试图从 RecyclerView 所在的视图中恢复并传递这些数据,但我不知道如何在适配器中执行此操作
这是适配器代码
public class Adaptagrande extends RecyclerView.Adapter<Adaptagrande.jHolder>{
List<Juego> jueguiss;
private Context micontext;
public Adaptagrande(Context micontext, List<Juego> jueguiss){
this.jueguiss = jueguiss;
this.micontext = micontext;
}
@NonNull
@Override
public jHolder onCreateViewHolder(ViewGroup grupo, int i){
View vv = LayoutInflater.from(grupo.getContext()).inflate(R.layout.layout_juegofull, grupo, false);
jHolder holdeer = new jHolder(vv);
return holdeer;
}
@Override
public void onBindViewHolder(final jHolder holder, final int pos){
final Juego j1 = jueguiss.get(pos);
holder.titxtlist.setText(j1.getTitulo());
holder.platxtlist.setText(j1.getPlataforma());
holder.posetxtlist.setText(j1.getPosesion());
holder.formatxtlist.setText(j1.getFisico());
holder.avatxtlist.setText(j1.getAvance());
holder.vectxtlist.setText(j1.getVeces());
//cargapref();
}
@Override
public int getItemCount() {
return jueguiss.size();
}
public static class jHolder extends RecyclerView.ViewHolder{
public TextView titxtlist;
public TextView platxtlist;
public TextView posetxtlist;
public TextView formatxtlist;
public TextView avatxtlist;
public TextView vectxtlist;
//SharedPreferences preferences;
public jHolder(View itemViewer){
super(itemViewer);
titxtlist=(TextView) itemView.findViewById(R.id.titxtlist);
platxtlist=(TextView) itemView.findViewById(R.id.platxtlist);
posetxtlist=(TextView) itemView.findViewById(R.id.posetxtlist);
formatxtlist=(TextView) itemView.findViewById(R.id.formatxtlist);
avatxtlist=(TextView) itemView.findViewById(R.id.avatxtlist);
vectxtlist=(TextView) itemView.findViewById(R.id.vectxtlist);
}
}
}
这是回收器中每个元素的 XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#505050"
android:orientation="vertical">
<TextView
android:id="@+id/textView8"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#C4E0E0E0"
android:paddingLeft="8dp"
android:paddingTop="2dp"
android:paddingRight="8dp"
android:paddingBottom="2dp" />
<LinearLayout
android:id="@+id/contene2"
android:layout_width="match_parent"
android:background="#525252"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/titxtlist"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView"
android:textColor="#FFF" />
<TextView
android:id="@+id/platxtlist"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="TextView"
android:textAlignment="center"
android:textColor="#FFF" />
<TextView
android:id="@+id/posetxtlist"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="TextView"
android:textAlignment="center"
android:textColor="#FFF" />
<TextView
android:id="@+id/formatxtlist"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="TextView"
android:textAlignment="center"
android:textColor="#FFF" />
<TextView
android:id="@+id/avatxtlist"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="TextView"
android:textAlignment="center"
android:textColor="#FFF" />
<TextView
android:id="@+id/vectxtlist"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="TextView"
android:textAlignment="center"
android:textColor="#FFF" />
</LinearLayout>
<TextView
android:id="@+id/textView10"
android:layout_width="match_parent"
android:background="#C4E0E0E0"
android:layout_height="1dp"
android:paddingLeft="8dp"
android:paddingTop="2dp"
android:paddingRight="8dp"
android:paddingBottom="2dp" />
</LinearLayout>
这是首选项和类的 xml 文件
public class SettingFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
setPreferencesFromResource(R.xml.preferences, s);
}
}
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="Visual lista grande">
<ListPreference
android:defaultValue="1"
android:entries="@array/colorsfondo"
android:entryValues="@array/colorsfondo"
android:key="list_preference_1"
android:title="Color de fondo" />
</PreferenceCategory>
</PreferenceScreen>
如果我在其他任何地方恢复数据或修改 PreferenceScreen 中的选择,它可以正常工作。
如果我能够从首选项中恢复字符串元素并通过“if”语句或“Switch - case”更改背景颜色,那将是完美的
【问题讨论】:
标签: java android xml sharedpreferences