【发布时间】:2012-08-02 12:05:32
【问题描述】:
我正在尝试将数据库中的信息显示为复选框。现在它工作正常,但在屏幕上放置了一列复选框。我想做的就是把它分成2个。
现在做什么:
项目1
项目2
项目3
项目4
项目5
我想要什么:
项目 1 项目 2
第 3 项第 4 项
项目5
最好是新的 2 列列表大小均匀,每个占屏幕的 50%,即使分配的文本长度不同。
我搜索了很多,尝试了 3 种不同的东西。还没有找到任何有效的东西。下面是我的代码(创建一列)。
private void listStudents()
{
st = (LinearLayout)findViewById(R.id.studTable);
ml = (RelativeLayout)findViewById(R.id.main);
ArrayList<ArrayList<String>> studentlst = new ArrayList<ArrayList<String>>();
studentlst = db.getAllStudentsRowsAsArrays();
final int sllen = studentlst.size();
final String student[][] = new String[sllen][3];
CheckBox cb[] = new CheckBox[sllen];
TextView pemail[] = new TextView[sllen];
int num = st.getChildCount();
if(num != 0) st.removeAllViews();
String tsl = sllen + "";
nos.setText(tsl);
for(int x=0; x < sllen; x++)
{
/************************
* student[x][case] *
* case options *
* 0 = id *
* 1 = name *
* 2 = email *
************************/
String curstudent = studentlst.get(x).toString();
student[x][0] = curstudent.substring(1,curstudent.indexOf(","));
student[x][1] = curstudent.substring(curstudent.indexOf(" ")+1,curstudent.lastIndexOf(","));
student[x][2] = curstudent.substring(curstudent.lastIndexOf(" ")+1, curstudent.length() - 1);
}
Arrays.sort(student, new Comparator<String[]>() {
@Override
public int compare(String[] entry1, String[] entry2) {
String name1 = entry1[1];
String name2 = entry2[1];
return name1.compareTo(name2);
}
});
for(int x=0;x<sllen;x++)
{
cb[x] = new CheckBox(this);
cb[x].setId(x+100);
cb[x].setText(student[x][1]);
pemail[x] = new TextView(this);
pemail[x].setText(student[x][2]);
pemail[x].setId(x+1000);
pemail[x].setVisibility(View.INVISIBLE);
st.addView(cb[x],x);
ml.addView(pemail[x],x);
}
}
XML 文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/lblmainselclass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="82dp"
android:layout_marginTop="7dp"
android:text="@string/lblmainselectclass" />
<Spinner
android:id="@+id/mainclassspinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/lblmainselclass" />
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="wrap_content"
android:layout_height="250dp"
android:layout_below="@+id/lblmainselstudents"
android:layout_centerHorizontal="true" >
<LinearLayout
android:id="@+id/studTable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
<TextView
android:id="@+id/lblmainselstudents"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/mainclassspinner"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:text="@string/lblselectstud" />
<Button
android:id="@+id/btnsend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="@string/btnlblsend" />
<Spinner
android:id="@+id/mainresponsespinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/btnsend"
android:layout_centerHorizontal="true"
android:layout_marginBottom="30dp" />
<TextView
android:id="@+id/mainnumofstudents"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="@string/invis"
android:visibility="invisible" />
<TextView
android:id="@+id/classselected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="@string/invis"
android:visibility="invisible" />
<TextView
android:id="@+id/responseselected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="@string/invis"
android:visibility="invisible" />
<TextView
android:id="@+id/numchecked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="@string/invis"
android:visibility="invisible" />
【问题讨论】:
-
你能展示你的xml布局吗?使用这么多数组有什么意义?
-
添加了 XML,但不确定为什么看到它很重要。一切都是动态创建的。至于数组
student[]是来自数据库的信息,如块注释中所述,子字符串化为单个事物。cb[]是创建的复选框,pemail[]是用于非相关目的的不可见文本视图 -
主要问题是为什么你使用一个RelativeLayout(通过ID 找到)而不是为列表视图中的每个元素创建一个新的?另外我不得不说,如果你开始使用 ListView,你应该摆脱这些数组,ListView 提供了对其元素的轻松访问
-
复选框被添加到 LinearLayout 中,唯一添加到 RL 的是不可见的持有者。我知道这不是一个优雅的解决方案,但正如我所说,我对 Android 开发非常陌生(这只是我的第二个应用程序,我以前从未使用过 Java 或 XML)。我只是希望找到一种简单的方法来制作两列而不是一列的复选框。
标签: android checkbox multiple-columns