我有一个列表,每个列表都有一个文本视图和 2 个单选按钮。我正在使用自定义阵列适配器来填充列表视图。我已经在列表中实现了项目单击侦听器,但它没有返回任何内容。实际上,它根本不执行单击方法。这是代码:
适配器类:
public class MyAdapter extends ArrayAdapter<String> {
Context context;
public static ArrayList<String> values=new ArrayList<String>();
public static ArrayList<String> attendance=new ArrayList<String>();
RadioGroup radioGroup;
RadioButton present,absent;
public MyAdapter(Context context,ArrayList values) {
super(context,org.example.attendance.R.layout.list_radio,values);
// TODO Auto-generated constructor stub
this.context=context;
this.values=values;
}
public View getView(int pos,View convertview,ViewGroup parent)
{
LayoutInflater inflator=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView=inflator.inflate(org.example.attendance.R.layout.list_radio,parent,false);
radioGroup=(RadioGroup)rowView.findViewById(R.id.radioGroup1);
present=(RadioButton)rowView.findViewById(org.example.attendance.R.id.radio0);
absent=(RadioButton)rowView.findViewById(org.example.attendance.R.id.radio1);
TextView textview=(TextView)rowView.findViewById(org.example.attendance.R.id.textView1);
// textview.setText(values[pos]);
//String s=values[pos];
textview.setText(values.get(pos));
//int selectedId = radioGroup.getCheckedRadioButtonId();
//if(selectedId==R.id.radio0)
return rowView;
}
public boolean areAllItemsEnabled()
{
return true;
}
@Override
public boolean isEnabled(int arg0)
{
return true;
}
}
主类:
public class Students_List extends Activity {
Intent i1;
String tablename;
RadioGroup radioGroup;
RadioButton present,absent;
ArrayList<String> student_name = new ArrayList<String>() ;
public static ArrayList<String> attendance=new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_students__list);
final ListView listview = (ListView) findViewById(R.id.listview);
i1=getIntent();
radioGroup=(RadioGroup)findViewById(R.id.radioGroup1);
present=(RadioButton)findViewById(org.example.attendance.R.id.radio0);
absent=(RadioButton)findViewById(org.example.attendance.R.id.radio1);
tablename=i1.getStringExtra("class")+"_student";
//Log.d("student","table"+tablename);
String temp=getServerData(KEY_12);
listview.setAdapter(new MyAdapter(this,student_name));
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long arg3) {
// TODO Auto-generated method stub
Log.d("view","clicked");
if(present.isChecked())
{
attendance.add("present");
}
if(absent.isChecked())
{
attendance.add("absent");
}
}
});
}
list_radio.xml:包含用于填充每一行的视图的文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView2"
android:layout_marginTop="24dp" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/textView1"
android:layout_marginRight="35dp"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="45dp"
android:checked="true" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RadioGroup>
</RelativeLayout>
最后是列表视图 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="150dp"
android:textSize="20sp"
android:textStyle="bold"
android:text="@string/present"
android:paddingRight="25dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold"
android:text="@string/absent" />
</LinearLayout>
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:cacheColorHint="#f8f8ff"
android:divider="#000000"
android:fadeScrollbars="true"
android:choiceMode="singleChoice"
android:fastScrollEnabled="true"
android:footerDividersEnabled="true"
android:textFilterEnabled="true"
android:textStyle="normal" />
<Button
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/submit"
android:onClick="submit"/>
</LinearLayout>
我应该怎么做才能获得单选按钮的状态?
如果列表项:
android:descendantFocusability="blocksDescendants"
也许将其从您的主布局中删除?
在这里,请获取此代码并根据需要进行更改。你需要自己工作。
此代码属于微调器列表。有关更多代码,您可以访问这里。
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// On selecting a spinner item
String item = parent.getItemAtPosition(position).toString();
// Showing selected spinner item
Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}