1

私はGridView学生向けで、すべてのセルに1つの学生名を入力するように考えています。GridCellそのすべての学生に名前があり、同じセルで1年間取得したすべてのマークも取得しています。だから私が持っているすべてのセルで:

agridview

  -------------------------------
 |   student 1    |   student 2  |
 |                |              |
 |   a listview   |              |
 | or scrollview  |  a listview  |
 |    ----------  |  ----------- |
 |    english A   |   english B  |
 |    math    A   |   math    A  |
 |    history A   |   history E  |
    -----------------------------

このための現在のxml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/senaryolar_grid"
    android:layout_width="166dp"
    android:layout_height="210dp"
    android:padding="3dp"
    android:background="@color/white">
    <RelativeLayout 
        android:layout_width="166dp"
        android:layout_height="32dp"
        android:background="@drawable/senaryobaslik"
        android:id="@+id/senaryo_baslik">
        <TextView android:layout_width="100dp" 
            android:layout_height="wrap_content" 
            android:id="@+id/senaryo_baslik_tv"
            android:textColor="@color/white"
            android:layout_marginLeft="4dp"
            android:textStyle="bold" />
        <ImageView 
            android:id="@+id/senaryo_baslik_iv" 
            android:src="@drawable/arti" 
            android:layout_width="22dp"
            android:layout_height="18dp"
            android:layout_toRightOf="@id/senaryo_baslik_tv"/>
    </RelativeLayout>
    <ScrollView 
        android:layout_height="50dp"
        android:layout_width="fill_parent"
        android:id="@+id/senaryo_scrollview"
        android:layout_below="@id/senaryo_baslik">
        <LinearLayout android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:id="@+id/senaryo_scroll_ll">
        </LinearLayout>
        </ScrollView>
</RelativeLayout>

だから私の問題は、関数によって生成されている間、関数が何回も呼び出されることを知らなかったので、これらを生成しようとしlistviewsたり、scrollview(両方を試した)getView()関数内に生成しようとしたので、ジェネレータを関数内に配置しようとしましたが、機能しませんでした私は得ました、そして私の質問は「どこに電話すればいいですか?」です。呼び出すことができない場合は、学生IDに従って動的に作成しますか?gridviewgetView()gridviewgetview()getView()outofmemoryexceptionlistview adaptergridviewgetview()

私の現在gridviewadapter:(私がやろうとしていることを示すために、この関数とxmlコードを上に置いただけgridviewadapterですgetview()が、これは私がやろうとしていることを行う正しい方法ではないことに注意してください)

public View getView(int position, View grid, ViewGroup parent) {
    if(grid == null){
        grid=layoutInflator.inflate(R.layout.senaryolar_grid, null);
    }
    ArrayList<ControlItem> senario_devices = new ArrayList<ControlItem>();
    // here think like senario_id is student_id
    int senario_id = samples_senario.get(position).getSenarioId();
    // here think like getSenarioDevices is getStudentMarks 
    senario_devices = dbhelpit.getSenarioDevices(senario_id); 
    int senario_device_size = senario_devices.size();
    TextView tv_senario;
    ImageView iv_senario;
    // I tried scrollview too since I thought listview adapters created outof memory exception but off course didnt work since its not the main problem
    ScrollView lv_senario;
    tv_senario = (TextView) grid.findViewById(R.id.senaryo_baslik_tv);
    iv_senario = (ImageView) grid.findViewById(R.id.senaryo_baslik_iv);
    lv_senario = (ScrollView) grid.findViewById(R.id.senaryo_scrollview);
    tv_senario.setText(samples_senario.get(position).getSenarioName());
    int i = 0;
    LinearLayout ll = (LinearLayout) grid.findViewById(R.id.senaryo_scroll_ll);
    while(i < senario_device_size){
        View temp = layoutInflator.inflate(R.layout.senaryolar_listview, null);
        TextView tv;
        ImageView iv;
        RelativeLayout rl;
        iv = (ImageView) temp.findViewById(R.id.senaryo_list_baslik_iv);
        rl = (RelativeLayout) temp.findViewById(R.id.senaryolar_list);
        tv = (TextView) temp.findViewById(R.id.senaryo_list_text_tv);
        tv.setText(senario_devices.get(position).getDeviceName());
        ll.addView(rl);
        i++;
    }
    return grid;
}

したがって、グリッドビューアダプタがあり、関数を呼び出すことができないときにlistViewAdapterそれらを呼び出すすべてのグリッドセルにを作成する場合は、である必要はありません。エコーしている間だけ純粋にすることができます。のような結果、私は質問が明確であることを願っています。ありがとうございました!listViewAdaptersgetView()listviewarray

4

0 に答える 0