自定义TextView未显示

时间:2016-09-03 00:02:25

标签: android textview android-view visibility

这是我在这里的第一个问题,所以不要对我太过刻意: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就可以完成所有工作,但效果很好。

提前谢谢!

0 个答案:

没有答案