保存具有Gson上下文的对象

时间:2018-08-13 14:41:50

标签: java android gson android-context

我在Context和Gson之间受阻。我有一个使用GSON模块保存在列表中的Product类。一切正常。 现在,我想将所有(Product类的)字符串放入字符串资源文件中。我尝试使用contextWrapper作为波纹管,但是不起作用。我也尝试通过将上下文作为参数传递,但是也没有用。 我该如何解决?

产品类别:

public class Product extends ContextWrapper{
    private String mNumber;
    private String mDate;
    ...

    public Product(Context base) {
        super(base);
    }

    public void display(String data){
        String message = getString(R.string.message);    // access resources file
        ...
    }
}

然后,在一个活动中,我将产品添加到列表中并保存。但是这一行有一个问题:

  

new Gson()。toJson(productList);

public my_activity extends AppCompatActivity {
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_activity);
        ...
        List<Produit> listeProduit = new ArrayList<>();
        Product product = new Product(my_activity.this);
        ...

        productList.add(0, product); 
        String jsonProduct = new Gson().toJson(productList);
        listeEditor.putString(PRODUCT_LIST, jsonProduct);
        listeEditor.apply();
    }
    ...
}

谢谢您的帮助:-)

编辑:解决方案

一个简单的解决方案是将上下文作为函数的参数传递。

产品类别:

public class Product{
    private String mNumber;
    private String mDate;
    ...

    public void display(Context context, String data){
        String message = context.getString(R.string.message);    // access resources file
        ...
    }
}

然后,在我问函数时添加上下文:

public my_activity extends AppCompatActivity {
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_activity);
        ...
        String data = "This is data";
        List<Produit> listeProduit = new ArrayList<>();
        Product product = new Product();
        display(this,data);
        ...

        productList.add(0, product); 
        String jsonProduct = new Gson().toJson(productList);
        listeEditor.putString(PRODUCT_LIST, jsonProduct);
        listeEditor.apply();
    }
    ...
}

0 个答案:

没有答案