2017-07-25 134 views
-1

我試圖從列表中添加值到SharedPreferences,這個想法是當用戶點擊一個按鈕時列表項被添加到收藏夾頁面,但是我不是能夠這樣做,我相信問題是因爲我使用自定義的ListViewAdapter,這個listview允許我將一個列表項向左滑動,以便它顯示按鈕。 Like so 我不能把SharedPreferences在這個類的工作,這就是我:從自定義ListViewAdapter向SharedPreferences添加值

public class ListViewAdapter extends BaseSwipeAdapter { 

    ArrayList<HashMap<String, String>> array = TodasAsCategorias.getListaCategorias(); 
    String Designacao, K_PRODUTO; 
    public static final String favoritos = "favoritos"; 

    private Context mContext; 

    public ListViewAdapter(Context mContext) { 
     this.mContext = mContext; 
    } 

    @Override 
    public int getSwipeLayoutResourceId(int position) { 
     return R.id.swipe; 
    } 

    @Override 
    public View generateView(final int position, ViewGroup parent) { 
     final View v = LayoutInflater.from(mContext).inflate(R.layout.list_item_cat, null); 
     SwipeLayout swipeLayout = (SwipeLayout) v.findViewById(getSwipeLayoutResourceId(position)); 
     v.findViewById(R.id.imgBtnFav).setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       Designacao = (array.get(position)).get("Designacao"); 
       K_PRODUTO = (array.get(position)).get("K_PRODUTO"); 
       Toast.makeText(mContext, "Adicionado aos favoritos", Toast.LENGTH_LONG).show(); 

       SharedPreferences.Editor editor = getSharedPreferences(favoritos, MODE_PRIVATE).edit(); 
       editor.putString("Designacao", Designacao); 
       editor.apply(); 

      } 
     }); 

     return v; 
    } 

    /*....*/ 
} 

它不斷給我同樣的錯誤,無法解析法「getSharedPreferences(?java.lang.String中) 「而無法解析符號‘MODE_PRIVATE’

真正需要幫助這裏,找不到網頁任何事情來幫助我:/

+0

把下生成視圖 –

+0

@BasilBattikhi怎麼會這樣的onClick方法?在生成視圖之外? – ALBPT

回答

1

getSharedPreferences()需要被訪問的環境。

mContext.getSharedPreferences 

嘗試

SharedPreferences.Editor editor = mContext.getSharedPreferences(favoritos, MODE_PRIVATE).edit(); 
+0

謝謝!傻我 – ALBPT

1

嘗試做

SharedPreferences.Editor editor = mContext.getSharedPreferences(favoritos, Context.MODE_PRIVATE).edit();