コンテキストを使用してビューアダプタクラスで共有プリファセンスを取得したいが、nullを返す。View AdapterでSharedPreferencesを取得できません。nullを返します。
私が試したことはある:
は、どのように私は、ログインパラメータがgetitemviewtypeにアダプターを得ることができますか?
私は任意のヘルプが良いでしょう
import static android.preference.PreferenceManager.getDefaultSharedPreferences;
public class ChattAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Chatt> moviesList;
Context context;
public String loginx;
public TextView title, year, genre;
public CardView cardViewphoto;
public ImageView resim;
private static final int TYPE_ITEM0 = 0;
private static final int TYPE_ITEM1 = 1;
SharedPreferences pref;
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView titlem, yearm, genrem;
public CardView cardViewphoto;
public ImageView resim;
public MyViewHolder(View view) {
super(view);
titlem = (TextView) view.findViewById(R.id.title);
genrem = (TextView) view.findViewById(R.id.genre);
yearm = (TextView) view.findViewById(R.id.year);
resim= (ImageView) view.findViewById(R.id.profile_image);
}
}
class ViewHolder0 extends RecyclerView.ViewHolder {
public TextView title, year, genre;
public CardView cardViewphoto;
public ImageView resim;
public ViewHolder0(View v) {
super(v);
title = (TextView) v.findViewById(R.id.titlesender);
genre = (TextView) v.findViewById(R.id.genresender);
year = (TextView) v.findViewById(R.id.yearsender);
// resim= (ImageView) v.findViewById(R.id.profile_image);
} }
public ChattAdapter(List<Chatt> moviesList) {
this.moviesList = moviesList;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context = parent.getContext();
pref =PreferenceManager.getDefaultSharedPreferences(context);
//SharedPreferences sharedPreferences = context.getSharedPreferences("FileName", Context.MODE_PRIVATE);
loginx = pref.getString("user", null);
Log.d("prefsss",loginx.toString());
// login= FirebaseAuth.getInstance().getCurrentUser().toString();
if (viewType == 1){
return new MyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_list_row, parent, false));
}
else{
return new ViewHolder0(LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_list_row2, parent, false));
}
// View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_list_row, parent, false);
//return new MyViewHolder(itemView);
}
@Override
public int getItemViewType(int position) {
// Here you have to write logic for which position have which type of row and return the same
Chatt love = moviesList.get(position);
Log.d("law",love.getTitle().toString());
Log.d("prefsss",loginx.toString());
//Log.d("law",login);
Random r = new Random();
int i1 = r.nextInt(80 - 65) + 65;
// pref =PreferenceManager.getDefaultSharedPreferences(context);
//SharedPreferences sharedPreferences = context.getSharedPreferences("FileName", Context.MODE_PRIVATE);
// login = pref.getString("user", null);
if(love.getTitle().equals(loginx)){
return 2;
}else{
return 1;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Log.d("lawtayp",String.valueOf(holder.getItemViewType()));
if (holder.getItemViewType()==2){
ViewHolder0 viewHolder0 = (ViewHolder0)holder;
Chatt love = moviesList.get(position);
// viewHolder0.title.setText(love.getTitle());
// viewHolder0.genre.setText(love.getGenre());
viewHolder0.year.setText(love.getYear());
// Picasso.with(getClass()).load("http://barronpw.alwaysdata.net/p/"+name+".png").into(cardViewphoto);
// Picasso.with(context).load("http://barronpw.alwaysdata.net/p/"+love.getTitle() +".png").into(viewHolder0.resim);
}else{
// code to populate type 1 view here
MyViewHolder myviewholder = (MyViewHolder)holder;
Chatt love = moviesList.get(position);
// Chatt love = moviesList.get(position);
// myviewholder.titlem.setText(love.getTitle());
// myviewholder.genrem.setText(love.getGenre());
myviewholder.yearm.setText(love.getYear());
// Picasso.with(getClass()).load("http://barronpw.alwaysdata.net/p/"+name+".png").into(cardViewphoto);
Picasso.with(context).load("http://barronpw.alwaysdata.net/p/"+love.getTitle() +"-p.png").into(myviewholder.resim);
}
// Code to populate type 0 view here
}
@Override
public int getItemCount() {
return moviesList.size();
}
から環境設定の初期化を削除するには、あなたが 'PreferenceManager.getDefaultSharedPreference(コンテキスト)を試してみました持っていますか。'? –
はい、しかしそれはjava.lang.NullPointerExceptionを示しています:ヌルオブジェクトリファレンスで仮想メソッド 'java.lang.String android.content.Context.getPackageName()'を呼び出そうとしています – barann
@barann; why'context.getApplicationContext() '?なぜ「文脈」だけでなく? –