从共享首选项数据填充列表项

时间:2012-10-31 14:46:14

标签: android arraylist android-listview sharedpreferences

我现在正尝试使用ListActivity将数据从ListActivity发送到另一个SharedPreferences。我在OnItemClickListener中添加了SharedPreferences的数据。我不知道如何使用ListActivity在另一个ArrayList中填充数据。以下是代码。

convertView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            SharedPreferences pref = getContext().getSharedPreferences(
                    Constants.SHARED_PRED, 0);
            Editor edit = pref.edit();

            edit.putString("TITLE", getItem(position).title);
            edit.putString("CHAR", getItem(position).character);
            edit.putString("TOTAL", getItem(position).totalpages+"");
            edit.putString("THUMB", getItem(position).thumbnail);
            edit.putInt("CODE", getItem(position).code);
            edit.commit();

            System.out.println("Title >>>>>>" + getItem(position).title);
            System.out.println("Character >>>>>>" + getItem(position).character);
            System.out.println("Total >>>>>>" + getItem(position).totalpages);
            System.out.println("thumb url >>>>>>" + getItem(position).thumbnail);
            System.out.println("Code >>>>>>" + getItem(position).code);

            Intent i = new Intent(getContext(), DetailPager.class);
            i.putExtra("NPOS", position);
            getContext().startActivity(i);
        }
    });

我的情况是我的应用程序中有两个活动。第一个活动将使用ListActivity启动SharedPreferences。第二个活动将加载DetailPager.class,这是用代码编写的。我的问题是我不知道如何填充ListActivity事件中没有启动的OnClick

我的ListActivity类

private ListViewAdapter m_adapter;
public ArrayList<String> cat = new ArrayList<String>();
private SharedPreferences preferences;
private SharedPreferences.Editor editor;
String title, character, thumbnail, totalPages;
int Code;

TextView titleView, charView, totalView;
ImageView thumbView, removeView;
Uri thumbUri;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTheme(android.R.style.Theme_Black_NoTitleBar);
    getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.myputet);
    init_UI();
}

public void init_UI() {
    preferences = getApplicationContext().getSharedPreferences(
            Constants.SHARED_PRED, 0);
    editor = preferences.edit();

    title = preferences.getString("TITLE", "");
    character = preferences.getString("CHAR", "");
    thumbnail = preferences.getString("THUMB", "");
    thumbUri = Uri.parse(thumbnail);
    totalPages = preferences.getString("TOTAL", "");
    Code = preferences.getInt("CODE", 0);

    System.out.println("Getting Title " + title);
    System.out.println("Getting character " + character);
    System.out.println("Getting thumbnail " + thumbnail);
    System.out.println("Getting thumbUri " + thumbUri);
    System.out.println("Getting totalPages " + totalPages);

    ListView lv = (ListView) findViewById(R.id.listview);
    m_adapter = new ListViewAdapter(this, R.layout.myputet_item, cat);
    lv.setAdapter(m_adapter);
}

private class ListViewAdapter extends ArrayAdapter<String> {
    private ArrayList<String> items;

    public ListViewAdapter(Context context, int textViewResourceId,
            ArrayList<String> items) {
        super(context, textViewResourceId, items);
        this.items = items;

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.myputet_item, null);
        }
        String info = items.get(position);

        if (info != null) {
            titleView = (TextView) v.findViewById(R.id.titleTxtView);
            charView = (TextView) v.findViewById(R.id.charTxtView);
            totalView = (TextView) v.findViewById(R.id.totalTxtView);
            thumbView = (ImageView) v.findViewById(R.id.charImageView);
            removeView = (ImageView) v.findViewById(R.id.removeListItem);

            titleView.setText(title);
            charView.setText(character);
            totalView.setText(totalPages);
            thumbView.setImageURI(thumbUri);
        }
        return v;
    }
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

}

1 个答案:

答案 0 :(得分:2)

嗯,嗯,不要这样做,当然。而不是全部放在SharedPreferences中,而是通过Intent传递这些内容。例如,而不是:

edit.putString("TITLE", getItem(position).title); 

你可以使用

i.putExtra("TITLE", getItem(position).title);

然后,在您的详细活动onCreate()中,使用:

Intent passedIntent = getIntent();
String title = passedIntent.getStringExtra("TITLE");