2012-12-28 43 views
0

我有麻煩保存的選擇radiobutton狀態,當用戶點擊後退鍵,然後回來到活動的。我的課程延伸至ListActivity。以下是創建listview的類的onCreateonBackPressed()方法。保存單選按鈕的狀態。在ArrayAdapter Type類

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.profile_manager); 

    dataInfo = new HandleData(ProfileMaker.this); 

    dataInfo.open(); 

    people = dataInfo.getAllComments(); 

    userAdapter = new ArrayAdapter<People>(ProfileMaker.this, android.R.layout.simple_list_item_single_choice, people); 

    setListAdapter(userAdapter); 


    registerForContextMenu(getListView()); 

    addUser = (Button) findViewById(R.id.buttonAddUser); 
    graphUser = (Button) findViewById(R.id.buttonGraph); 

    addUser.setOnClickListener(this); 
    graphUser.setOnClickListener(this); 

    idSharing = getSharedPreferences(idPref, 0); 
    nameSharing = getSharedPreferences(namePref, 0); 
    ageSharing = getSharedPreferences(agePref, 0); 
    weightSharing = getSharedPreferences(weightPref, 0); 
    genderSharing = getSharedPreferences(genderPref, 0); 

    otherName = getSharedPreferences(nameThere, 0); 
    otherAge = getSharedPreferences(ageThere, 0); 
    otherWeight = getSharedPreferences(weightThere, 0); 
    otherGender = getSharedPreferences(genderThere, 0); 
} 


    @Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 

    Intent newIntent = new Intent(ProfileMaker.this, Monitor.class); 
    startActivity(newIntent); 
} 

每當我按下home鍵和返回給應用程序,那我選的是仍處於選中狀態,但是當我按下返回鍵進入前一個活動,然後回到這一個radiobutton,未選擇radiobutton。如何保存先前選擇的radiobutton的狀態?這些radiobuttonsradiogroup。任何幫助,高度讚賞。謝謝。

編輯: 好了,所以這是我得到。

public class AdapterClass extends ArrayAdapter<People>{ 

private final List<People> list; 
    private final Activity context; 

    public AdapterClass(Activity context, List<People> list) { 
    super(context, R.layout.profile_manager, list); 
    this.context = context; 
    this.list = list; 
    } 

    static class ViewHolder { 
    protected TextView text; 
    protected RadioButton radioButton; 
     RadioGroup group; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    View view = null; 
    if (convertView == null) { 
     LayoutInflater inflator = context.getLayoutInflater(); 
     view = inflator.inflate(R.layout.button_layout, null); 
     final ViewHolder viewHolder = new ViewHolder(); 
     viewHolder.text = (TextView) view.findViewById(R.id.label); 

     viewHolder.radioButton = (RadioButton) view.findViewById(R.id.check); 
     viewHolder.radioButton 
      .setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, 
       boolean isChecked) { 
       People element = (People) viewHolder.radioButton 
        .getTag(); 
       element.setSelected(buttonView.isChecked()); 

      } 
      }); 
     view.setTag(viewHolder); 
     viewHolder.radioButton.setTag(list.get(position)); 
    } else { 
     view = convertView; 
     ((ViewHolder) view.getTag()).radioButton.setTag(list.get(position)); 
    } 
    ViewHolder holder = (ViewHolder) view.getTag(); 
    holder.text.setText(list.get(position).getName()); 
    holder.radioButton.setChecked(list.get(position).isSelected()); 
    return view; 
    } 

當它實際上選擇了單選按鈕時,我很興奮。但問題是它只選擇列表中的第一個按鈕,即使我取消選擇它並選擇了另一個項目,也沒有別的。另外,它讓我選擇多個不需要的單選按鈕。我錯過了什麼?

+1

你接受評級是低的。 –

回答

0

當你按下後退鍵時你正在使用意圖導航,你正在失去radiogroup的狀態,所以活動重新初始化(例如,當你來到你的屏幕它將從OnCreate中),則需要額外添加到您的意圖發送給您的單選按鈕狀態

例如像這樣

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 

    Intent newIntent = new Intent(ProfileMaker.this, Monitor.class); 
newIntent.putExtra("somename",state of the radiobutton); 
    startActivity(newIntent); 
} 

ProfileMaker活動檢查是否有任何額外的,如果有一個額外的獲取和選擇單選按鈕據此。

if (getIntent().getExtras().getString("yourextraname") != null) 
      applicant = getIntent().getExtras().getString("applicant"); 
+0

我無法引用列表視圖並從那裏選擇單選按鈕。我只能使用this.getListAdapter()方法進行更改。但是這個方法不包含我想從this.getListView()方法中獲得的方法。如何設置從適配器方法中選擇的listitem? – Navio53

0

做一個布爾數組,並用假值無線電buttons.Now的數量填補它當過您單擊單選按鈕,使該指數真的,如果是假的,如果點擊再做一次假。使用您自己的列表適配器它可以幫助您更多。我已經做了類似的情況下複選框,你可以看到我的帖子Unable to check/uncheck CheckedTextView inside getView。回覆我,如果這可以幫助你... ...

+0

我更新了我的問題。 – Navio53