내 응용 프로그램에서 동적 체크 박스를 만들려고 할 때 문제가 있습니다. 디자인이 잘 작동하고 원하는만큼 많은 체크 박스를 만들 수 있습니다. 체크 상자는 TextView와 함께 TableRow에 배치되어 텍스트가 확인란의 왼쪽에 오게합니다. 하지만 내 문제는, 그 여부에 상관없이 체크 박스의 "상태"를 얻을 수있는 나의 활동입니다. Infheck를 사용하여 내 Checkbox를 만듭니다. 체크 박스에 대한 XML은 :동적으로 생성 된 체크 박스에 대한 setOnClickListeners
<TableRow xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/TableRow" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:paddingLeft="20dip" android:id="@+id/tv_effect" android:gravity="left" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:textColor="#000" android:textSize="18dip" android:layout_width="wrap_content"></TextView>
<CheckBox android:id="@+id/cb_effect" android:layout_height="wrap_content" android:text="" android:layout_gravity="right" android:layout_width="wrap_content"></CheckBox>
기능 나는 텍스트 뷰와 체크 박스를 포함하는 새로운 tablerow을 만들 전화 :
public void layoutMakeSpeakerEffect(String effectName,int effectNumber)
{
LayoutInflater linflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View myViewSp = linflater.inflate(R.layout.speaker_settings, null);
final TextView tv_effect = (TextView) myViewSp.findViewById(R.id.tv_effect);
tv_effect.setId(effectNumber);
tv_effect.setText(effectName);
final CheckBox cb_effect = (CheckBox) myViewSp.findViewById(R.id.cb_effect);
cb_effect.setId(effectNumber);
cb_effect.setText("");
cb_effect.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(cb_effect.isChecked())
{
Toast toast = Toast.makeText(getApplicationContext(), ""+tv_effect.getText()+": ON", Toast.LENGTH_SHORT);
toast.show();
}
else
{
Toast toast = Toast.makeText(getApplicationContext(), ""+tv_effect.getText()+": OFF", Toast.LENGTH_SHORT);
toast.show();
}
}
});
tl_speakerSettings.addView(myViewSp);
}
그리고 언급 한 바와 같이, 설계가 잘 작동
. 그러나이 기능 외부에서 어떻게 체크 박스의 "상태"를 알 수 있습니까? 그리고 체크 박스 상태를 지울 수있는 함수와 체크 박스를 활성화하거나 비활성화 할 수있는 또 다른 함수가 필요합니까?혼자서이 문제를 파악할 수 없습니다.
유일한 생각은 "cb_effects"ID를 확인한 후 원하는 체크 박스의 상태를 확인하는 것입니다.
@Cristian에게 감사드립니다. 그러나 나는 아직도 약간 혼란 스럽다. 어떻게하면 내 문제를 해결할 수 있을까? 필요한 것은 생성 된 체크 박스의 상태를 저장하는 메소드입니다. 토글 버튼을 클릭하면 체크 상자의 상태를 지우고 다시 토글 버튼을 눌렀을 때 "이전"상태를 다시 표시해야합니다. 대신에 setOnCheckedChangeListener를 구현함으로써 실제로 어떻게 어떤 체크 상자가 눌려 졌는지 볼 수 있습니까? – CoOkie
'buttonView' 체크 상자에 대한 참조를 제공하기 때문에. 그것은 당신이 체크 박스에 원하는 것을하기 위해 사용할 수있는 객체입니다 :'Checkbox bla = (Checkbox) buttonView;'. – Cristian
고마워, 그 방법을 시도해 볼게 .. : D – CoOkie