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