2017-07-25 121 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();