Android 以编程方式将带有textview ans微调器的相对布局数组添加到线性布局

Android 以编程方式将带有textview ans微调器的相对布局数组添加到线性布局,android,android-layout,Android,Android Layout,我正在尝试将RelativeLayouts数组添加到我在布局xml文件中定义的一个LinearLayout(ll)中。我需要填充的相对布局元素的数量完全取决于数据库中的数据数量。我只想在左侧显示一系列textview,在右侧显示相应的微调器。我想要的输出如下所示: 但是下面的代码不适合我。我得到一个空屏幕,尽管toast消息正在显示,确认循环正在完全执行。我对android还是个新手,我确信我在这里错过了一些东西。任何帮助都将不胜感激。提前谢谢 package com.gk.srmac

我正在尝试将RelativeLayouts数组添加到我在布局xml文件中定义的一个LinearLayout(ll)中。我需要填充的相对布局元素的数量完全取决于数据库中的数据数量。我只想在左侧显示一系列textview,在右侧显示相应的微调器。我想要的输出如下所示:

但是下面的代码不适合我。我得到一个空屏幕,尽管toast消息正在显示,确认循环正在完全执行。我对android还是个新手,我确信我在这里错过了一些东西。任何帮助都将不胜感激。提前谢谢

    package com.gk.srmacads;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewFlipper;

public class EditGrade extends Activity {

    dbOpenHelper dbHelper;
    SQLiteDatabase db;
    Cursor c;
    String[] column ={dbOpenHelper.COLUMN_ID,dbOpenHelper.COLUMN_SEM,dbOpenHelper.COLUMN_SUBNAME,dbOpenHelper.COLUMN_GRADE};
    int len;
    RelativeLayout elems[];
    Spinner gradeSpin[];
    TextView tv[];

    LinearLayout ll;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_edit_grade);

        ll= (LinearLayout) findViewById(R.id.egSem1);

        dbHelper=new dbOpenHelper(this);
        db=dbHelper.getReadableDatabase();

        c=db.query("ACAD_TABLE", column, null, null, null, null, null);

        len=c.getCount();
        c.moveToFirst();
        Toast.makeText(this, String.valueOf(c.getCount()), Toast.LENGTH_SHORT).show();

        elems=new RelativeLayout[len];
        gradeSpin= new Spinner[len];
        tv=new TextView[len];
        RelativeLayout.LayoutParams rlParam= new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams tvParam= new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams spinnerParam= new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        spinnerParam.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        tvParam.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

        ArrayAdapter<CharSequence> gradeAdap = ArrayAdapter.createFromResource(this, R.array.grades, R.layout.spinnerlayout);

        int spinPos;
        for(int i=0; i<len ;i++)
        {
            elems[i]= new RelativeLayout(this);
            tv[i]= new TextView(this);
            gradeSpin[i]= new Spinner(this);

            tv[i].setId(1);
            gradeSpin[i].setId(2);

            spinnerParam.addRule(RelativeLayout.RIGHT_OF,tv[i].getId());

            elems[i].setLayoutParams(rlParam);
            tv[i].setLayoutParams(tvParam);
            gradeSpin[i].setLayoutParams(spinnerParam);

            tv[i].setText(c.getString(c.getColumnIndex(dbOpenHelper.COLUMN_SUBNAME)).toString());
            Toast.makeText(this, c.getString(c.getColumnIndex(dbOpenHelper.COLUMN_SUBNAME)), Toast.LENGTH_SHORT).show();
            gradeSpin[i].setAdapter(gradeAdap);
            //spinPos=getGradePosition(c.getString(c.getColumnIndex(dbOpenHelper.COLUMN_GRADE)));
            //gradeSpin[i].setSelection(spinPos);

            elems[i].addView(tv[i]);
            elems[i].addView(gradeSpin[i]);

            ll.addView(elems[i]);
            c.moveToNext();         
        }
    }
}
package com.gk.srmacads;
导入android.app.Activity;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.os.Bundle;
导入android.view.ViewGroup.LayoutParams;
导入android.widget.ArrayAdapter;
导入android.widget.LinearLayout;
导入android.widget.RelativeLayout;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
导入android.widget.ViewFlipper;
公共类EditGrade扩展活动{
dbOpenHelper-dbHelper;
sqlitedb数据库;
光标c;
String[]column={dbOpenHelper.column_ID,dbOpenHelper.column_SEM,dbOpenHelper.column_SUBNAME,dbOpenHelper.column_GRADE};
内伦;
相对性元素[];
旋转器级旋转[];
TextView电视[];
线性布局;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u edit\u grade);
ll=(线性布局)findViewById(R.id.egSem1);
dbHelper=新的dbOpenHelper(this);
db=dbHelper.getReadableDatabase();
c=db.query(“ACAD_表”,列,null,null,null,null);
len=c.getCount();
c、 moveToFirst();
Toast.makeText(this,String.valueOf(c.getCount()),Toast.LENGTH_SHORT.show();
elems=新的相对长度[len];
gradeSpin=新微调器[len];
tv=新文本视图[len];
RelativeLayout.LayoutParams rlParam=新的RelativeLayout.LayoutParams(LayoutParams.MATCH_父项,LayoutParams.WRAP_内容);
RelativeLayout.LayoutParams tvParam=新的RelativeLayout.LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容);
RelativeLayout.LayoutParams spinnerParam=新的RelativeLayout.LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容);
spinnerParam.addRule(RelativeLayout.ALIGN\u PARENT\u RIGHT);
tvParam.addRule(相对左对齐);
ArrayAdapter gradeAdap=ArrayAdapter.createFromResource(this,R.array.grades,R.layout.spinnerlayout);
int-spinPos;

对于(int i=0;i这是我最后编译的代码,基本上我猜您确实正确地从cussor检索了数据,下面是代码附件:

public class MainActivity extends Activity {

    String[] column = { "Lorem", "Ipsum", "Dolor", "Sit", "Amet" };
    int len;
    RelativeLayout elems[];
    Spinner gradeSpin[];
    TextView tv[];

    LinearLayout ll;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ll = (LinearLayout) findViewById(R.id.egSem1);

        len = 10;

        elems = new RelativeLayout[len];
        gradeSpin = new Spinner[len];
        tv = new TextView[len];

        RelativeLayout.LayoutParams rlParam = new RelativeLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams tvParam = new RelativeLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams spinnerParam = new RelativeLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        spinnerParam.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        tvParam.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

        ArrayAdapter<String> arrayAdap = new ArrayAdapter(this,
                android.R.layout.simple_spinner_dropdown_item, column);

        int spinPos;
        for (int i = 0; i < len - 1; i++) {
            elems[i] = new RelativeLayout(this);
            tv[i] = new TextView(this);
            gradeSpin[i] = new Spinner(this);

            tv[i].setId(i + 1);

            spinnerParam.addRule(RelativeLayout.RIGHT_OF, tv[i].getId());

            elems[i].setLayoutParams(rlParam);
            tv[i].setLayoutParams(tvParam);
            gradeSpin[i].setLayoutParams(spinnerParam);

            tv[i].setText("Lorem Ipsum");
            gradeSpin[i].setAdapter(arrayAdap);

            elems[i].addView(tv[i]);
            elems[i].addView(gradeSpin[i]);

            ll.addView(elems[i]);
            //c.moveToNext();
        }

    }

}
公共类MainActivity扩展活动{
String[]column={“Lorem”、“Ipsum”、“Dolor”、“Sit”、“Amet”};
内伦;
相对性元素[];
旋转器级旋转[];
TextView电视[];
线性布局;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ll=(线性布局)findViewById(R.id.egSem1);
len=10;
elems=新的相对长度[len];
gradeSpin=新微调器[len];
tv=新文本视图[len];
RelativeLayout.LayoutParams rlParam=新的RelativeLayout.LayoutParams(
LayoutParams.MATCH_父项,LayoutParams.WRAP_内容);
RelativeLayout.LayoutParams tvParam=新的RelativeLayout.LayoutParams(
LayoutParams.WRAP_内容,LayoutParams.WRAP_内容);
RelativeLayout.LayoutParams spinnerParam=新的RelativeLayout.LayoutParams(
LayoutParams.WRAP_内容,LayoutParams.WRAP_内容);
spinnerParam.addRule(RelativeLayout.ALIGN\u PARENT\u RIGHT);
tvParam.addRule(相对左对齐);
ArrayAdapter arrayAdap=新的ArrayAdapter(此,
android.R.layout.simple_微调器_下拉列表_项目,列);
int-spinPos;
对于(int i=0;i

你能用名称发布完整的类和xml吗?我也添加了完整的类和xml文件!我不确定它是否能解决问题,但你正在为每行的TV和微调器生成相同的Id(1,2),尝试为你添加的每个视图分配唯一的Id是的,没有解决问题..但是一个有效点!你解决了问题吗?
public class MainActivity extends Activity {

    String[] column = { "Lorem", "Ipsum", "Dolor", "Sit", "Amet" };
    int len;
    RelativeLayout elems[];
    Spinner gradeSpin[];
    TextView tv[];

    LinearLayout ll;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ll = (LinearLayout) findViewById(R.id.egSem1);

        len = 10;

        elems = new RelativeLayout[len];
        gradeSpin = new Spinner[len];
        tv = new TextView[len];

        RelativeLayout.LayoutParams rlParam = new RelativeLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams tvParam = new RelativeLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams spinnerParam = new RelativeLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        spinnerParam.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        tvParam.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

        ArrayAdapter<String> arrayAdap = new ArrayAdapter(this,
                android.R.layout.simple_spinner_dropdown_item, column);

        int spinPos;
        for (int i = 0; i < len - 1; i++) {
            elems[i] = new RelativeLayout(this);
            tv[i] = new TextView(this);
            gradeSpin[i] = new Spinner(this);

            tv[i].setId(i + 1);

            spinnerParam.addRule(RelativeLayout.RIGHT_OF, tv[i].getId());

            elems[i].setLayoutParams(rlParam);
            tv[i].setLayoutParams(tvParam);
            gradeSpin[i].setLayoutParams(spinnerParam);

            tv[i].setText("Lorem Ipsum");
            gradeSpin[i].setAdapter(arrayAdap);

            elems[i].addView(tv[i]);
            elems[i].addView(gradeSpin[i]);

            ll.addView(elems[i]);
            //c.moveToNext();
        }

    }

}