检索适配器中共享首选项的每个值

时间:2014-10-02 13:48:29

标签: android listview sharedpreferences android-adapter

我正在尝试检索存储在sharedpreference变量中的每个值。我使用listview在哪里显示存储在sharedpreference var中的所有值。这些值是来自互联网的网址,指向列表视图中显示的不同图像。 我想做的是如何通过我所做的适配器在列表视图中显示共享首选项的每个值。我在Adapter类中的getView代码是:

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

    // reference to convertView
    View v = convertView;

    // inflate new layout if null
    if(v == null) {
        LayoutInflater inflater = LayoutInflater.from(mContext);
        v = inflater.inflate(R.layout.activity_listado_imagenes_subidas, null);
    }

    // load controls from layout resources
    ImageView imagen = (ImageView)v.findViewById(R.id.imagen);
    Button botonCopiarUrl = (Button)v.findViewById(R.id.btnCopiarImagenUrl);

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);

    // set data to display
    imagen.setImageDrawable(sharedPreferences.getString("url", ""));

    // return view
    return v;
}

使用此代码,我只会始终获得共享偏好的第一个值,无论我在listview中拥有多少项目。 你能帮我解决这个问题吗?

先谢谢你。

2 个答案:

答案 0 :(得分:0)

您只从共享偏好中获取一个值,因为您尝试只获取一个值,您可以创建一个循环来获取其他值

答案 1 :(得分:0)

我使用以下代码加密所有存储的字符串,应该提供您需要的所有内容。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MyApp.getAppContext());

    Map<String, ?> all = prefs.getAll();
    String key, value;
    for(Map.Entry<String,?> entry : all.entrySet()) {
        key = entry.getKey();
        if(entry.getValue() instanceof String) {
            value = (String) entry.getValue();

            // encrypt and store again
        }      
    }

此致 托马斯