我有一个游标,其中getCount返回50.需要在ListView中显示内容,我正在使用如下的游标适配器。出于某些奇怪的原因,列表始终包含一个元素。记录后,我发现cursor.getPosition()
始终为0.为什么?我一直在使用CursorAdapters一段时间之前我从未遇到过这个问题。所以我感到困惑,看不出我做错了什么。
Cursor cursor = getContext().getContentResolver().query(uri, PROJECTION,null,null,null);
MyLog.d(TAG,"cursor count is %s",cursor.getCount());
cursor.moveToFirst();
CursorAdapter cursorAdapter = new CursorAdapter(getContext(),cursor,true){
@Override
public View newView(Context context,Cursor cursor,ViewGroup parent){
MyLog.d(TAG,"newView cursor count %s position %s",cursor.getCount(),cursor.getPosition());
return LayoutInflater.from(context).inflate(R.layout.my_row,parent,false);
}
@Override
public void bindView(View view,Context context,Cursor cursor){
MyLog.d(TAG,"bindView at index %s",cursor.getPosition());
TextView name = (TextView) view.findViewById(R.id.name);
TextView address = (TextView) view.findViewById(R.id.address);
String naTxt = cursor.getString(COL_NAME);
String addTxt = cursor.getString(COL_ADDR)
+" "
+cursor.getString(COL_STR);
name.setText(naTxt);
address.setText(addTxt);
}
};
root.setAdapter(cursorAdapter);
答案 0 :(得分:1)
我发现了这个问题,这确实是最新机器人的新事物,因为我之前还没有见过它。对于行布局,我有android:layout_height="match_parent"
。我应该使用android:layout_height="wrap_content"
。打败我。
答案 1 :(得分:0)
请尝试删除
cursor.moveToFirst();
并使用
CursorAdapter cursorAdapter = new CursorAdapter(getContext(),cursor,0)
而不是CursorAdapter cursorAdapter = new CursorAdapter(getContext(),cursor,true)
您应该使用android.widget.CursorAdapter