我有一个自定义ListView
并使用CursorAdapter
来公开来自Cursor的数据。我得到的一个挑战是在每个列表项中添加序列号。我知道必须有一个名为“_id”的列,它是一个主要字段。
我能做的是通过抓取“_id”列的值来添加序列号,但这是不可能的,因为我按降序显示了所有数据。
我尝试的另一种方法是声明一个变量,并在每次创建项目时添加1。
我的Adapter
类扩展CursorAdapter
只是看起来像这样
public class BalanceInfoAdapter extends CursorAdapter {
Context context;
List<Balance> listOfBalance;
int serialNo = 0; //Declared as field
//Some constructers to initialise fields
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
serialNo+=1; //Added +1 to the variable
return LayoutInflater.from(context).inflate(
R.layout.myLayout, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
mySerialNumberTextView.setText(String.valueOf(serialNo)); //Shown Serial Number in a TextView of List Item
}
问题
直到列表项目第一次填满屏幕,它才能正常工作。但是当我向下滚动时,我上面提到的方式失败了,因为CursorAdapter
在滚动时回收它的列表项,并且第一项的序列号变得更高。
问题
Adapter
类。答案 0 :(得分:0)
public abstract View newView (Context context, Cursor cursor, ViewGroup parent)
cursor - 从中获取数据的光标。光标已经移动到正确的位置。
所以这里光标已经处于正确的位置。因此,您可以使用cursor.getPosition()方法来获取正确的序列号。
答案 1 :(得分:0)
您可以使用Cursor的 public abstract int getPosition()方法。
如需更多参考,请点击here
例如:int rowNum = cursor.getPosition();
注意:在CursorAdapter的 public abstract void bindView(View视图,Context context,Cursor cursor)方法中,游标会自动移动到当前行。 因此,使用游标我们可以获得当前行位置。