2

我正在开发一个ListView用于创建学生标记列表的应用程序。

在这个应用程序中,列表有 10 名学生。为这些学生进行的考试提供了四个等级。一个学生只能适应四个年级中的一个。

教师将在 中为学生分配成绩ListView

我的 xml 文件Studentlist.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" >
<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ListView>
</LinearLayout>

我的row.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="500dp"
android:layout_height="fill_parent"
android:padding="10dp" >

<TableRow>

    <TextView
        android:id="@+id/SNo"
        style="@style/text"
        android:layout_width="40dp"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/StudNo"
        style="@style/text"
        android:layout_width="80dp"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/StudName"
        style="@style/text"
        android:layout_width="180dp"
        android:layout_height="wrap_content" />

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="160dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:checked="true" />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="40dp"
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/radio2"
            android:layout_width="40dp"
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/radio3"
            android:layout_width="40dp"
            android:layout_height="wrap_content" />
    </RadioGroup>
</TableRow>

现在我正在尝试以下形式的输出:

1 0001 AAAA <RadioButton1> <RadioButton2> <RadioButton3> <RadioButton4>
2 0002 BBBB <RadioButton1> <RadioButton2> <RadioButton3> <RadioButton4>

如何使用适配器功能?

ArrayAdapter<String,String,String,RadiGroup> studList=new ArrayAdapter<String,String,String,RadiGroup>();

我可以这样使用吗?如何开发定制的适配器ListView

建议我最好的解决方案!

4

2 回答 2

1

您可以使用从 ArrayAdapter 继承的类,并覆盖其 getView() 方法。

public class StudentAdapter extends ArrayAdapter<Student> {

protected LayoutInflater inflater;

    public StudentAdapter(final Context context) {
        super(context, 0);
        inflater = (LayoutInflater) ((Context) context)
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        // Note: You should optimize here with re-using convertView

        View rowView = inflater.inflate(R.layout.user_address_row_layout,
                parent, false);
        TextView sNo = (TextView) rowView.findViewById(R.id.sNo);
        sNo.setText(getItem(position).number);
            // same for every field of the row
            // ...

        return rowView;
    }

 }
于 2013-04-08T15:41:34.843 回答
1

This is a sample example of custom adapter for listview. Modify it as your need: XML layout :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/main"
    android:orientation="vertical"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Header -->

    <LinearLayout
        android:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/black" >

        <TextView
            android:id="@+id/item2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:height="30dip"
            android:text="Latest News - Your Healing Place"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#FFFFFF"
            android:width="100dip" />

        <TextView
            android:id="@+id/item1"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:height="30dip"
            android:width="20dip" />

    </LinearLayout>

    <View android:layout_width="fill_parent"
        android:layout_height="1dip"
        android:background="?android:attr/listDivider" />

    <LinearLayout android:id="@+id/layout"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent">

        <ListView
            android:id="@+id/listview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@color/black" >

        </ListView>

    </LinearLayout>
</LinearLayout>

news.java :

List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
String[] from = new String[] {"details", "date"};
int[] to = new int[] { R.id.item1, R.id.item2};
ListView lv= (ListView)findViewById(R.id.listview);
HashMap<String, String> map = new HashMap<String, String>();
map.put("details", "This is a sample message");
map.put("date", "24-07-2003");
fillMaps.add(map);

SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.grid_item, from, to);
lv.setAdapter(adapter);
于 2013-04-08T15:50:05.947 回答