如何在回收清单项目中添加序列号
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
在滚动时回收它的列表项并且第一个项目的序列号变得最高。
问题
- 有没有其他方法可以在回收列表项中添加S/N?或者我可以防止这种情况发生在同一个
Adapter
class.
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自动移动到当前行。
所以使用游标我们可以在 .
中获取当前行位置
我有一个自定义 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
在滚动时回收它的列表项并且第一个项目的序列号变得最高。
问题
- 有没有其他方法可以在回收列表项中添加S/N?或者我可以防止这种情况发生在同一个
Adapter
class.
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自动移动到当前行。 所以使用游标我们可以在 .
中获取当前行位置