Пользовательские общие настройки в контексте BaseAdapter null - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть собственный класс SharedPreference, и я пытаюсь получить строку из своего пользовательского класса SharedPrefecenses.Я получил ошибку в методе getView, когда "prf = new PrefManager (context);"

Что я могу сделать, я искал 2 дня.

public class PrefManager {
SharedPreferences pref;
SharedPreferences.Editor editor;
Context _context;

int PRIVATE_MODE = 0;

private static final String PREF_NAME = "Secur-transact";

private static final String IS_FIRST_TIME_LAUNCH = "IsFirstTimeLaunch";

public PrefManager(Context context) {
    this._context = context;
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

public String getString(String PREF_NAME) {
    if(pref.contains(PREF_NAME)){
        return pref.getString(PREF_NAME,null);
    }
    return  "";
}

}

Я пытаюсь получить метод getString в виде адаптера.

public class CustomListAdapter extends BaseAdapter {

PrefManager prf;

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    prf = new PrefManager(context); // I GOT ERROR IN HERE

    if (inflater == null)
        inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null)
        convertView = inflater.inflate(R.layout.list_row, null);


    TextView name = (TextView) convertView.findViewById(R.id.name);

    if (prf.getString("ColorName").equals("RED")) {
        name.setBackgroundResource(R.color.primaryLightColorRed);
        name.setTextColor(R.color.colorWhite);
    }

инициализация здесь

public class SampleClass extends Fragment {

private List<ModelsProps> modelsPropsList = new ArrayList<ModelsProps>();
public SampleClass () {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);

    final ListView listView = (ListView) rootView.findViewById(R.id.list);

    final CustomListAdapter adapter = new CustomListAdapter(getActivity(), modelsPropsList);

    listView.setAdapter(adapter);

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы можете передать контекст из фрагмента в адаптер в конструкторе, а затем передать его из адаптера в класс предпочтений.

0 голосов
/ 05 февраля 2019

Возможно, вы не инициализируете переменную context.

Просто попробуйте изменить строку:

prf = new PrefManager(context);

на:

prf = new PrefManager(parent.getContext());
...