2013-04-08 49 views
2

我正在开发一个用于创建学生Marklist的应用程序ListView在Android中使用TextView,TextView,RadioGroup自定义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定制适配器?

建议我寻求最佳解决方案!

+0

?常规的LinearLayout或RelativeLayout也适用。 – etienne 2013-04-08 15:33:04

+0

你需要定义一个自定义的适配器,这个目的.http://stackoverflow.com/questions/15832335/android-custom-row-item-for-listview/15832695#15832695 – Raghunandan 2013-04-08 15:35:54

+0

两者都是一样的,对..我们正在取代通过自定义布局在列表视图中列出项目。在这里LinearLayout和TableLayout是一样的,我们可以使用任何东西。告诉我一个关于LinearLayout解决方案的建议。 – user2258206 2013-04-08 15:36:27

回答

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; 
    } 

} 
+0

您没有使用View Holder。 http://www.youtube.com/watch?v=wDBM6wVEO70 – Raghunandan 2013-04-08 15:43:19

+0

同意,但你应该更有效地检查convertView是否已经存在,只需要更新视图的情况。在这里你有一个使用ViewHolder模式的例子:https://github.com/Jachu5/RssFeeder_sherlock/blob/master/src/com/example/adapter/RSS_CustomAdapter.java – Jachu 2013-04-08 15:45:35

+0

这就是为什么我指定'你应该优化这里[等] '在评论中。我没有用它来保持例子简单。 – etienne 2013-04-08 17:17:19

1

这是一个用于listview的自定义适配器的示例。修改它作为你的需要: XML布局:

<?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:你为什么要使用TableLayout该行

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); 
相关问题