我想从普通的Activity启动ListActivity,但ListActivity.xml不包含listview对象,而是有一个tablelayout和一个tablerow。
这是XML:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tLayoutLR"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<TableRow
android:id="@+id/trRowLR"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="UselessParent" >
<TextView
android:id="@+id/tvTextoLR"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ID \t Nombre \t\t\t\t\t\tDescripción"
tools:ignore="HardcodedText" />
</TableRow>
在我的主要活动中,我尝试启动ListActivity,但它失败了。这是代码:
final Button btnListas = (Button) findViewById(R.id.button);
btnListas.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(ActividadInicial.this, MainActivity.class);
startActivity(i);
}
});
我在这里做的是在TableRows中填充从SQLite数据库中提取的一些信息。我创建了一个类,在这种情况下是歌曲,并且还创建了一个实现数组列表的类,所以我可以轻松地插入,更新,删除等。这是我使用的类:
public class C_Lista extends ArrayList <Song> {
private Context _Contexto;
public C_Lista(Context _Contexto) {
this._Contexto = _Contexto;
}
// Method that fills
public void LoadSongs()
{
try{
this.clear();
String strNombreBD = "BDMusica";
BDMusica con = new BDMusica(_Contexto,strNombreBD, null, 1);
SQLiteDatabase db = con.getWritableDatabase();
String strSQL = "Select ID_Song, Nombre, Cantante, Year, Album From Songs ";
Cursor cursor = db.rawQuery(strSQL, null);
if(cursor.moveToFirst())
{
do{
Song objA = new Song(_Contexto);
objA.setID(cursor.getInt(0));
objA.setNombre(cursor.getString(1));
objA.setCantante(cursor.getString(2));
objA.setYear(cursor.getInt(3));
objA.setAlbum(cursor.getString(4));
this.add(objA);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
}
catch(Exception e)
{
Log.e("Archivos Leer: ", "JALQ" + e.getMessage(), e);
}
}
希望你能帮助我。提前谢谢。
答案 0 :(得分:1)
ListActivity的文档清楚地说明了:
你自己的视图必须包含一个带有id的ListView对象 &#34; @android:ID /列表&#34;
由于您的布局不包含该内容,因此在执行getViewById(android.R.id.ist)
答案 1 :(得分:0)
我建议你永远不要使用ListActivity。 ListActivity只是在xml中查找@android:id / list,并帮助您直接从Activity获取ListView过程。
相反,使用通常的活动 - 如果你想在其中放入一个列表,只需将其放入xml中,无论如何都要命名,使用Activity.findViewById找到它并直接使用它的程序。
你从中获得了什么?当您为所有屏幕使用相同的活动类型时,您可以使用有用的程序(例如隐藏/显示键盘等)制作父活动,这样您的类结构将看起来像活动 - &gt; MyParentActivity-&GT; MyScreenActivity。