我是Android开发的新手。我正在使用ListView列出SQLite数据库中的一些数据。 我的Main.xml文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/inspections"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Header -->
<LinearLayout android:id="@+id/header"
android:background="#ff347c12"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
>
<TextView android:id="@+id/item1"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="100dip"
android:height="30dip"
android:text="Id"
/>
<TextView android:id="@+id/item2"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:text="Customer"
android:width="100dip"
android:height="30dip"
/>
<TextView android:id="@+id/item3"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:text="Contract"
android:width="100dip"
android:height="30dip"
/>
<TextView android:id="@+id/item4"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:text="Inspector"
android:width="100dip"
android:height="30dip"
/>
</LinearLayout>
<!-- List Divider -->
<View android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="?android:attr/listDivider" />
<!-- ListView (grid_items) -->
<LinearLayout android:id="@+id/layout"
android:layout_width="wrap_content"
android:layout_height="fill_parent">
<ListView android:id="@+id/listview"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
</ListView>
</LinearLayout>
</LinearLayout>
我使用的是grid_item.xml,用于保存每行的数据,如下所示:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/item1"
android:text="row_id"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="20dip"
/>
<TextView android:id="@+id/item2"
android:text="col_1"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="100dip"
/>
<TextView android:id="@+id/item3"
android:text="col_2"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="100dip"
/>
<TextView android:id="@+id/item4"
android:text="col_3"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="100dip"
/> </LinearLayout>
代码:
public class Inspections extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
try
{
super.onCreate(savedInstanceState);
setContentView(R.layout.inspections);
LoadInspections();
}
catch (Exception e) {
CommonMethods.ShowMessageBox(this, e.toString());
}
}
private void LoadInspections()
{
try
{
DBAdapter db = new DBAdapter(this);
db.open();
Cursor cur = db.GetInspections();
if(cur.moveToFirst())
{
startManagingCursor(cur);
ListView lv = (ListView)findViewById(R.id.listview);
// create the grid item mapping
String[] from = new String[] {"_id", "customer", "contract", "inspector"};
int[] to = new int[] {R.id.item1, R.id.item2, R.id.item3, R.id.item4 };
// fill in the grid_item layout
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.grid_item, cur, from, to);
lv.setAdapter(adapter);
Log.d("Inspection", "Records found " + cur.getString(1) + "/ "+ cur.getString(2)+ "/ "+ cur.getString(3));
}
else
{
Log.d("Inspection", "No reords");
}
db.close();
}
catch(Exception ex)
{
Log.d("Inspection", "Error: "+ ex.toString());
}
}
}
问题: LoadInspections()有问题,列表视图不显示数据,只显示HEADER-ROW。光标正在检索数据,请检查以下行:
Log.d("Inspection", "Records found " + cur.getString(1) + "/ "+ cur.getString(2)+ "/ "+ cur.getString(3));
日志窗口显示数据。
我尽力在stackoverflow上找到答案,但无法成功。 提前感谢您宝贵的时间和时间。救命。
答案 0 :(得分:0)
我正在尝试不同的事情&amp; 当我删除“Header”&amp;我的main.xml中的“List Divider”部分可以使用。非常奇怪?
所以我的main.xml现在看起来像:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/inspections"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- ListView (grid_items) -->
<LinearLayout android:id="@+id/layout"
android:layout_width="wrap_content"
android:layout_height="fill_parent">
<ListView android:id="@+id/mylistview"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
</ListView>
</LinearLayout>
</LinearLayout>
有人可以对listview的这种奇怪行为发表评论吗?
答案 1 :(得分:0)
您可能已经发现但主要的LinearLayout具有水平方向。您要添加的每个子视图都将水平添加到其旁边。由于您的第一个视图&#34; @ + id / header&#34;,占据了整个屏幕宽度,其他视图将被添加到屏幕之外。
如果您更改&#34; @ + id / inspect&#34;的方向进入&#34;垂直&#34;您的所有观点都将可见。