我有一个列表,显示从我的SQLite数据库中获取的信息,一切正常。我想在列表的顶部放置一个广告横幅,并将其放在XML布局中,就像我对其他活动一样,但广告被视为列表文本视图,并在每个列表元素中重复,同时包含数据库信息。 / p>
我已经尝试了几个小时的XML布局代码并阅读其他解决方案,但似乎没有任何工作,我很难过。这是我的班级代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ScoresDbAdapter.DatabaseHelper helper = new ScoresDbAdapter.DatabaseHelper(this);
database = helper.getWritableDatabase();
Cursor data = database.query("scores", fields, null, null, null, null, null);
dataSource = new SimpleCursorAdapter(this, R.layout.highscores, data, fields, new int[] { R.id.first, R.id.last });
ListView view = getListView();
view.setHeaderDividersEnabled(true);
view.addHeaderView(getLayoutInflater().inflate(R.layout.highscores, null));
setListAdapter(dataSource);
}
这是我的XML布局代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:id="@+id/rowLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<com.google.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="a151868c65661b8"
ads:loadAdOnCreate="true" />
<TextView
android:id="@+id/first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="First name" />
<TextView
android:id="@+id/last"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:gravity="right"
android:text="Last name" />
</RelativeLayout>
我尝试在布局中嵌套布局以分隔广告和文字视图,但我不确定我是否能够完成我需要做的事情,任何建议都表示赞赏。
答案 0 :(得分:1)
我认为你使用ListActivity?
简单的答案就是停止使用ListActivity和ListFragment。
使用常规活动,为setContentView指定布局(将横幅置于布局顶部,在ListView上方)并使用findViewbyId获取列表视图并添加适配器。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main) //need to set layout now that we are no longer using listactivity
ScoresDbAdapter.DatabaseHelper helper = new ScoresDbAdapter.DatabaseHelper(this);
database = helper.getWritableDatabase();
Cursor data = database.query("scores", fields, null, null, null, null, null);
dataSource = new SimpleCursorAdapter(this, R.layout.highscores, data, fields, new int[] { R.id.first, R.id.last });
ListView view = (ListView) findViewbyId(R.id.list_view) //findbyid instead of getListView()
view.setHeaderDividersEnabled(true);
view.addHeaderView(getLayoutInflater().inflate(R.layout.highscores, null));
view.setAdapter(dataSource); //set the adapter to the listView
}
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<com.google.ads.AdView
android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="50dp"
ads:adSize="BANNER"
ads:adUnitId="a151868c65661b8"
ads:loadAdOnCreate="true" />
<ListView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/list_view" />
</LinearLayout>
正如您所看到的,代码中的差别并不大,现在您没有任何愚蠢的限制,现在您已完全了解ListView的实际工作方式! :)