1

我正在尝试保存我动态创建的切换按钮的状态。我无法保存当前状态。如果我在我的应用程序中更改活动然后返回切换按钮的状态将恢复为默认值。这是我的代码。有人能帮我吗?

private class CustomAdapter extends ArrayAdapter<HashMap<String, Object>>
{


    public CustomAdapter(Context context, int textViewResourceId, 
            ArrayList<HashMap<String, Object>> Strings){
        super(context,textViewResourceId, Strings);
    }

    List<Paper> papers_list = BetterActivity.masterConference.getPapers();


    private class ViewHolder
    {
        TextView paperTitle, author;
    }



    ViewHolder viewHolder;



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


        if(convertView == null)
        {
            convertView = inflater.inflate(R.layout.paper_row_item, null);
            viewHolder=new ViewHolder();

            viewHolder.paperTitle=(TextView) convertView.findViewById(R.id.paperTitle);
            viewHolder.author=(TextView) convertView.findViewById(R.id.author);
            addFavorite=(ToggleButton) convertView.findViewById(R.id.ToggleButton01);

            convertView.setTag(viewHolder);
        }
        else
            viewHolder = (ViewHolder) convertView.getTag();

        viewHolder.paperTitle.setText(searchResults.get(position).get("title").toString());
        viewHolder.author.setText(searchResults.get(position).get("author").toString());

        LoadPreferences();

        final List<Paper> pape = masterConference.getUser().getFavoritePapers();

        addFavorite.setOnClickListener(new View.OnClickListener() {

            Paper p = papers_list.get(position);
            @Override
            public void onClick(View v) {

                boolean on = ((ToggleButton) v).isChecked();
                System.out.println(parent.getChildAt(position).getId() + " " + position);
                SharedPreferences preference = getPreferences(MODE_PRIVATE);
                if(on)
                {
                    masterConference.addPaperToFavorites(p);
                    SharedPreferences.Editor editor = preference.edit();
                    editor.putBoolean(p.getTitle(),true);
                    editor.commit();
                    //SavePreferences(p.getTitle(), position);
                    Toast.makeText(getBaseContext(), "esta verde, " + p.getTitle() + "size " + pape.size(), Toast.LENGTH_SHORT).show();
                }
                else
                {
                    masterConference.removePaperFromFavorites(p);
                    SharedPreferences.Editor editor = preference.edit();
                    editor.putBoolean(p.getTitle(),false);
                    editor.commit();
                    Toast.makeText(getBaseContext(), "esta branco", Toast.LENGTH_SHORT).show();
                }
                // TODO Auto-generated method stub

            }
        });

        return convertView;

    }
}  
private void LoadPreferences(){
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);

    for(int i = 0; i < papers_list.size(); i++)
    {
    String epa = papers_list.get(i).getTitle();
    boolean teste = preferences.getBoolean(epa, false);

    if(teste == true)
        addFavorite.setChecked(true);
    else
        addFavorite.setChecked(false);
    }

}
}

有人可以告诉我有什么问题吗?我保存并加载,但这无济于事。

4

1 回答 1

0

Why not just pass the state of the ToggleButton to your next Activity before starting it? Or make it a global static member, but this won't be much help if the Activity gets destroyed and recreated. Might want to just store the state of the button in SharedPreferences and access it anywhere you like.

于 2013-06-10T22:46:49.120 回答