这是我在这里的第一个问题,所以不要对我太过刻意:D
我的计划是为教师制定一个座位计划,让学生参加。此座位计划是从SQLiteDatabase动态创建的。虽然使用GridView / GridLayout / TableLayout的方法都失败了,但现在我只是有一个垂直的LinearLayout,向它添加水平的。
现在,为了了解学生的位置,我一直在尝试从TextView扩展,这是一个名为SchuelerView(Schüler=德语学生)的类,与普通的TextView相同,只需再添加一个属性:一个舒勒。 如果我以同样的方式做所有事情,只需使用TextViews,它就可以工作,但是当涉及到我的自定义类时,它不起作用。
这是SchuelerView代码:
public class SchuelerView extends TextView {
private Schueler schueler;
private int posx, posy;
public SchuelerView(Context context) {
super(context);
}
public SchuelerView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
public int getPosx() {
return posx;
}
public int getPosy() {
return posy;
}
public void setPosx(int posx) {
this.posx = posx;
}
public void setPosy(int posy) {
this.posy = posy;
}
public void setSchueler(Schueler s) {
schueler = s;
posx = schueler.getPosx();
posy = schueler.getPosy();
}
public Schueler getSchueler() {
return schueler;
}
}
这是使用这些视图的方法:
public void schuelerZuGrid() {
lv.removeAllViews(); // Vertikales LinearLayout
lv.setWeightSum(reihen);
for(int i = 0; i < reihen; i++) {
LinearLayout lh = new LinearLayout(this);
lh.setOrientation(LinearLayout.HORIZONTAL);
lh.setWeightSum(spalten); // DESIGN
lv.addView(lh);
for(int j = 0; j < spalten; j++) {
Cursor c = db.rawQuery("SELECT vorname, nachname, posx, posy, sid FROM Schueler, Hat "
+ "WHERE Hat.schuelerid = Schueler.sid AND Hat.kfid =" + kfid + " AND posx="+j+" AND posy="+i, null);
if(c.getCount() > 0) {
c.moveToFirst();
String vorname = c.getString(c.getColumnIndex("vorname"));
String nachname = c.getString(c.getColumnIndex("nachname"));
int posx = c.getInt(c.getColumnIndex("posx"));
int posy = c.getInt(c.getColumnIndex("posy"));
int sid = c.getInt(c.getColumnIndex("sid"));
c.close();
Schueler schueler = new Schueler(vorname, nachname, posx, posy, sid);
SchuelerView t = new SchuelerView(this);
t.setSchueler(schueler);
t.setText(vorname + " " + nachname);
t.setGravity(Gravity.CENTER); // DESIGN
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1); // DESIGN
t.setLayoutParams(lp); // DESIGN
t.setOnClickListener(this);
lh.addView(t);
} else {
SchuelerView t = new SchuelerView(this);
t.setPosx(j);
t.setPosy(i);
t.setText("/");
t.setGravity(Gravity.CENTER); // DESIGN
t.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1)); // DESIGN
t.setOnClickListener(this);
lh.addView(t);
}
}
}
}
正如我所说,我得到的唯一错误是我在活动中看不到任何内容。但是,所有SQL语句都正确执行,正如我所说的那样,只需使用TextViews就可以完成所有工作,但效果很好。
提前谢谢!