2013-06-09 2 views
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); 
    } 

} 
} 

누군가 잘못된 정보를 말해 줄 수 있습니까? 저장하고로드하지만 아무것도 수행하지 않습니다.

답변

0

시작하기 전에 ToggleButton의 상태를 다음 활동으로 전달하지 않는 이유는 무엇입니까? 또는 전역 정적 멤버로 만들지 만 Activity가 파괴되어 다시 만들어지면 큰 도움이되지 않습니다. SharedPreferences에 단추의 상태를 저장하고 원하는 곳에 액세스 할 수 있습니다.