繁体   English   中英

listView中的sharedPreferences

[英]sharedPreferences in listView

我想从sharefPreferenc中的数组中获取一个数组,但是它无法恢复值! 请看我的代码,告诉我什么地方错了?

这是我的Prefs.java

public class Prefs extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    Random rnd = new Random();

    int[] cartridgeColor = new int[181];
    for (int i = 0; i <= 180; i++) {
        int aaa = rnd.nextInt(13);
        String name = "cartridgeColor" + String.valueOf(i);
        cartridgeColor[i] = prefs.getInt(name, aaa);
    }

}

}

这是我的活动,希望能从爱好中获得

public class GamesListActivity extends ListActivity {

SharedPreferences sp;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.games_list);
    setListAdapter(new AA());
    sp = getSharedPreferences("Prefs", MODE_PRIVATE);

}


@Override
protected void onListItemClick(ListView l, View v, int position, long id) {

}


class AA extends ArrayAdapter<String> {

    public AA() {
        super(GamesListActivity.this, R.layout.games_list_layout, Resources2.GameListArray);
    }


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

        View row = convertView;
        if (row == null) {
            LayoutInflater inflater = getLayoutInflater();
            row = inflater.inflate(R.layout.games_list_layout, parent, false);
        }
        TextView GameName = (TextView) row.findViewById(R.id.textView1);
        ImageView GamePic = (ImageView) row.findViewById(R.id.imageView1);
        ImageView Cartridge = (ImageView) row.findViewById(R.id.imageView2);

        int[] CartridgesColorArray = new int[181];
        for (int i = 0; i <= 180; i++) {

            String name = "cartridgeColor" + String.valueOf(i);
            CartridgesColorArray[i] = (sp.getInt(name, 1));

        }

        GameName.setText(Resources2.GameListArray[position]);
        GamePic.setImageResource(Resources2.GamePicArray[position]);
        Cartridge.setImageResource(Resources2.CartridgeFrame[CartridgesColorArray[position]]);

        return row;

    }
}

}

这是我的另一堂课

public class Resources2 {

public static String[] GameListArray  = { "Super Mario Bros1", "Battle City", "Contra", "TinyTon", "Tmnt3 Manhattan Project" };
public static int[]    GamePicArray   = { R.drawable.g1, R.drawable.g2, R.drawable.g3, R.drawable.g4, R.drawable.g5 };
public static int[]    CartridgeFrame = { R.drawable.micro_cart_01, R.drawable.micro_cart_02, R.drawable.micro_cart_03, R.drawable.micro_cart_04, R.drawable.micro_cart_05, R.drawable.micro_cart_06, R.drawable.micro_cart_07, R.drawable.micro_cart_09, R.drawable.micro_cart_10, R.drawable.micro_cart_11, R.drawable.micro_cart_12, R.drawable.micro_cart_01, R.drawable.micro_cart_01, R.drawable.micro_cart_01 };

}

一切正常,没有任何错误!

我发现上面的代码片段有两个错误。

我没有看到任何关于SharedPreferences的文章。 您应该阅读SharedPreferences.Editor

假设您已经在执行此操作,则需要确保您正在读取和写入同一文件。 PreferenceManager.getDefaultSharedPreferences(this)getSharedPreferences("Prefs", MODE_PRIVATE) 指向同一文件,因此您需要进行更正。

一些其他提示:

  • 重复使用应该相同的对象或值是一个好习惯。 考虑使用一种创建SharedPreferences对象的方法,以确保您始终在读取/写入同一文件。
  • 我会考虑使用Gson将对象或集合写出到SharedPreferences,而不是为每个对象创建一个条目。 这将大大简化事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM