私は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に従って動的に作成しますか?gridview
getView()
gridview
getview()
getView()
outofmemoryexception
listview adapter
gridview
getview()
私の現在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
それらを呼び出すすべてのグリッドセルにを作成する場合は、である必要はありません。エコーしている間だけ純粋にすることができます。のような結果、私は質問が明確であることを願っています。ありがとうございました!listViewAdapters
getView()
listview
array