0
自从使用Android以来,我很好奇我如何让Android在方向更改(布局与布局平面)方面做所有事情。无活动交互的布局方向变化
目前我必须向游标适配器提供正确数量的db列和视图。这是正确的方式,还是我错过了什么?你们如何做到这一点?
请看看两个SimpleCursorAdapter,其中我提供了两个现有布局的相同布局名称(布局中有一个布局,布局中有一个)。唯一的区别是额外的db列“type”和附加视图“R.id.activities_row_text3”。
这是正确的方法吗?
Cursor cursor;
SimpleCursorAdapter simpleCursorAdapter = null;
if ((cursor = db.fetchActivities(connection)) != null) {
startManagingCursor(cursor);
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
simpleCursorAdapter = new SimpleCursorAdapter(
this,
R.layout.activities_row,
cursor,
new String[] {
"name",
"time" },
new int[] {
R.id.activities_row_text1,
R.id.activities_row_text2 });
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
simpleCursorAdapter = new SimpleCursorAdapter(
this,
R.layout.activities_row,
cursor,
new String[] {
"name",
"time",
"type" },
new int[] {
R.id.activities_row_text1,
R.id.activities_row_text2,
R.id.activities_row_text3 });
}
if (simpleCursorAdapter != null) {
setListAdapter(simpleCursorAdapter);
}
}
感谢您的回答。上面显示的代码是创建每个活动的一部分,因为我的应用通常支持不同的布局。我得出的结论是,我一定在做一些非常错误的事情。随着不同的屏幕尺寸和方向,不同的光标/适配器/视图组合的列表确实增加了,我认为“问专业人员”。考虑如图所示的两种布局:一种有两列,一种有三列(只是一个测试 - 通常更复杂)。你使用两个不同的光标还是一个光标获取所有光标?您如何/在哪里决定使用哪些列/视图?谢谢hjw – 2010-10-21 18:33:35
对一种查询使用一个游标(在自己的类中包装Cursor并提供方便的构造函数)。编写自己的适配器类而不是使用SimpleAdapters - 看起来在开始时被编译,但它变得很容易。在多个活动中重用这些类。您可以在运行时预先定义布局或更改布局特性(如列号),这两种解决方案都有优点和缺点。不要将UI与数据结构混合 - 在学习新技术之后,您将能够稍后改进代码。 – tomash 2010-10-21 19:07:28