我用最简单的布局方式来定义listview:
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="true" />
因为我需要一个检查列表,所以我CheckedTextView
在 listitem 模板中使用。用户可以根据需要检查列表中的任意数量的项目。它工作正常。
我有一个ListActivity
根视图:
public abstract class ActivityList extends ListActivity {
protected ListView listView;
public abstract void renderListView( String filter );
@Override
public void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.commonlist );
listView = getListView();
}
}
它是抽象的,因为ActivitiList
它将是其他视图类的父类,如产品、客户端等。抽象的 renderlistview()将由具有 的子类实现SimpleCursorAdapter
,例如:
public class ActivityProductList extends ActivityList {
@Override
public void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
...
renderListView( null );
}
@Override
public void renderListView( String filter ) {
listView.setChoiceMode( ListView.CHOICE_MODE_MULTIPLE );
...
SimpleCursorAdapter sca = new SimpleCursorAdapter( this, R.layout.productlistitemchecked, mCursor, from, to );
setListAdapter( sca );
}
}
ActivityProductList工作正常。用户做他想做的一切,然后单击在父类中定义和实现的 FINISH 按钮,列表视图也在其中。他的事件处理程序如下:
protected void getCheckedItems() {
try {
String className = this.getListAdapter().getClass().getName();
Log.e("NanCal", className);
Class c = this.getListAdapter().getClass();
ListAdapter la = this.getListAdapter();
SimpleCursorAdapter ca = ( SimpleCursorAdapter )la;
Cursor cursor = ca.getCursor();
SparseBooleanArray selectedItems = listView.getCheckedItemPositions();
for( int i = 0; i < selectedItems.size(); i++ ) {
int selectedPosition = selectedItems.keyAt( i );
cursor.moveToPosition( selectedPosition );
long rowId = ca.getItemId( selectedPosition );
Log.d( "", "row id: " + rowId );
}
} catch( Exception exception ) {
Log.e( "NanCalc", exception.getMessage() + "::" + exception.toString() );
}
}
概念是:获取所选项目的ID。
但是,在我用注释标记的行中,程序崩溃并出现错误:
this.getListAdapter ()给了我一个CursorAdapter
比演员表崩溃的结果。
有人可以帮我吗?