2012-12-28 44 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