Tôi đang tạo ứng dụng android giao diện người dùng của ứng dụng của tôi dưới đây được đưa ra.Listview với Checkbox, RadioButton, Textview và nút không hoạt động chính xác trong android
Khi nhấp vào nút gửi, tôi cần hộp kiểm đã chọn và giá trị nút radio.
Ví dụ Linux không được chọn, cc (nút radio) được chọn.
Bản ghi được điền động trong chế độ xem danh sách, nhưng tôi không thể làm cho nó hoạt động. Rất nhiều vấn đề về .
- Khi tôi cuộn nút radio chế độ xem danh sách sẽ tự động được chọn hoặc bỏ chọn không thể duy trì trạng thái nút radio.
- Khi nhấp vào nút không nhận được nút radio đã chọn cũng như hộp kiểm.
Dưới đây là bố cục của tôi cũng như chương trình java. Đề nghị tôi để có được các giá trị chính xác.
main.xml
<ListView
android:id="@+id/my_list"
android:layout_width="fill_parent"
android:layout_height="199dp" />
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit"
/>
row.xml
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label"
android:layout_toRightOf="@+id/check"
android:textSize="20sp" >
</TextView>
<CheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="4dip"
android:layout_marginRight="10dip"
android:focusable="false"
android:focusableInTouchMode="false" >
</CheckBox>
<RadioGroup
android:id="@+id/radioSex"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/to"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:checked="true"
android:text="To" />
<RadioButton
android:id="@+id/cc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:text="CC" />
</RadioGroup>
MyAdaptor.java
public class MyAdapter extends ArrayAdapter<Model> {
private final List<Model> list;
private final Activity context;
boolean checkAll_flag = false;
boolean checkItem_flag = false;
public MyAdapter(Activity context, List<Model> list) {
super(context, R.layout.row, list);
this.context = context;
this.list = list;
}
static class ViewHolder {
protected TextView text;
protected CheckBox checkbox;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
convertView = inflator.inflate(R.layout.row, null);
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView.findViewById(R.id.label);
viewHolder.checkbox = (CheckBox) convertView
.findViewById(R.id.check);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
int getPosition = (Integer) buttonView.getTag();
list.get(getPosition).setSelected(
buttonView.isChecked());
}
});
convertView.setTag(viewHolder);
convertView.setTag(R.id.label, viewHolder.text);
convertView.setTag(R.id.check, viewHolder.checkbox);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.checkbox.setTag(position);
viewHolder.text.setText(list.get(position).getName());
viewHolder.checkbox.setChecked(list.get(position).isSelected());
return convertView;
}
MainActivity.java
public class MainActivity extends Activity implements OnItemClickListener {
ListView listView;
ArrayAdapter<Model> adapter;
List<Model> list = new ArrayList<Model>();
private RadioGroup radioCcToGroup;
private RadioButton radioTypeButton;
private Button btn;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
listView = (ListView) findViewById(R.id.my_list);
btn = (Button) findViewById(R.id.submit);
btn.setOnClickListener(new View.OnClickListener() {
int count = 0;
@Override
public void onClick(View view) {
count = listView.getAdapter().getCount();
for (int i = 0; i < count; i++) {
// here i am not able to get the records as getting on onItemClick of the listview
}
}
});
adapter = new MyAdapter(this, getModel());
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) {
TextView label = (TextView) v.getTag(R.id.label);
CheckBox checkbox = (CheckBox) v.getTag(R.id.check);
Toast.makeText(v.getContext(),
label.getText().toString() + " " + isCheckedOrNot(checkbox),
Toast.LENGTH_LONG).show();
}
private String isCheckedOrNot(CheckBox checkbox) {
if (checkbox.isChecked())
return "is checked";
else
return "is not checked";
}
private List<Model> getModel() {
list.add(new Model("Linux"));
list.add(new Model("Windows7"));
list.add(new Model("Suse"));
list.add(new Model("Eclipse"));
list.add(new Model("Ubuntu"));
list.add(new Model("Solaris"));
list.add(new Model("Android"));
list.add(new Model("iPhone"));
list.add(new Model("Java"));
list.add(new Model(".Net"));
list.add(new Model("PHP"));
return list;
}
Model.java
private String name;
private boolean selected;
public Model(String name) {
this.name = name;
}
public String getName() {
return name;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
Cảm ơn, @Kalem, nhưng vẫn còn nếu tôi di chuyển listview nó được chọn tự động. Nếu tôi không chọn bất kỳ tùy chọn nút radio nào và sau đó cuộn không có hiệu lực nhưng trong trường hợp nếu bạn chọn bất kỳ tùy chọn nào trong số đó. – subodh
Lạ lùng, tôi không gặp vấn đề đó khi tôi thử nghiệm, tôi sẽ xem xét điều đó một lần nữa. Chỉ cần được rõ ràng, bạn đã thay thế 'setOnCheckedChangeListener'? Bạn cũng có thể kiểm tra nếu nó không đến từ: 'viewHolder.checkbox.setChecked (list.get (position) .isSelected());' – Kalem
Tôi chỉ sao chép và dán mã của bạn nhưng trong trường hợp hộp kiểm nó hoạt động tốt thậm chí tôi đã nhận được tất cả phản hồi một cách chính xác. nhưng khi tôi chọn bất kỳ nút radio và cuộn nào, nó chọn nhiều nút radio trong giao diện người dùng nhưng khi tôi gửi trang, nó chỉ hiển thị cái được mong đợi nhưng trong giao diện người dùng hiển thị nhiều như được chọn. – subodh