如何在回收清单项目中添加序列号

How to add serial number in recycling list items

我有一个自定义 ListView 并使用 CursorAdapter 从 Cursor 公开数据。我遇到的一个挑战是在每个列表项中添加序列号。我知道必须有一个名为“_id”的列,它是一个主字段。

我能做的是通过抓取“_id”列的值来添加序列号,但这是不可能的,因为我按降序显示了所有数据。

我尝试的另一种方法是声明一个变量并在每次创建项目时添加 1。

我的 Adapter class 扩展 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 在滚动时回收它的列表项并且第一个项目的序列号变得最高。

问题

从文档中提取http://developer.android.com/reference/android/widget/CursorAdapter.html#newView%28android.content.Context,%20android.database.Cursor,%20android.view.ViewGroup%29

 public abstract View newView (Context context, Cursor cursor, ViewGroup parent)

cursor - 从中​​获取数据的游标。光标已经移动到正确的位置。

所以这里光标已经在正确的位置了。所以你可以使用 cursor.getPosition() 方法来获得正确的序列号。

可以使用Cursor的publicabstract int getPosition()方法

更多参考请点击here

例如:int rowNum = cursor.getPosition();

注意:在CursorAdapter的publicabstract void bindView(View view,Context context,Cursor cursor)方法中,cursor自动移动到当前行。 所以使用游标我们可以在 .

中获取当前行位置