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

開始する前に、ToggleButton の状態を次のアクティビティに渡してみませんか? または、グローバルな静的メンバーにしますが、アクティビティが破棄されて再作成された場合、これはあまり役に立ちません。ボタンの状態を SharedPreferences に保存して、好きな場所にアクセスしたい場合があります。

于 2013-06-10T22:46:49.120 に答える