我有一个ListView,它使用SimpleCursorAdapter从sqlite读取数据,并且该表有大约1000行,但是我已经按日期过滤了我的列表中的列表,因此过滤后的游标包含2行特殊日期。因此我想要添加一个自定义行号(不能使用_id)作为我的list.one已经解决的问题,是ViewBinder,这是我的代码:
adapter.setViewBinder(new ViewBinder() {
public boolean setViewValue(View aView, Cursor aCursor, int aColumnIndex) {
if (aColumnIndex == 0) {
aCursor.moveToFirst();
if(aCursor.moveToFirst()) {
TextView textView = (TextView) aView;
textView.setText("" + WeeklyListRowNumber);
WeeklyListRowNumber = WeeklyListRowNumber + 1;
}
return true;
}
return false;
}
});
我的List中有11列,而WeeklyListRowNumber在顶部初始化为1,我的问题是我的rownumbers变为7,8但它必须是1,2。可以有人告诉我如何解决这个问题?
答案 0 :(得分:1)
当您使用适配器进行列表视图时,您可能会在getview中获取位置变量。 使用该位置(int)作为自定义列表行号 它将从零(0)开始。
根据要求设置......
答案 1 :(得分:1)
最后我用ViewBinder解决了我的问题:
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View aView, Cursor aCursor, int aColumnIndex) {
if (aColumnIndex == 0) {
TextView textView = (TextView) aView;
int CursorPos = aCursor.getPosition() + 1;
textView.setText(Integer.toString(CursorPos));
return true;
}
return false;
}});
答案 2 :(得分:1)
public View getView(int position, View convertView, ViewGroup parent) {
View retval = null;
retval = LayoutInflater.from(parent.getContext()).inflate(
R.layout.content, null);
title = (TextView) retval.findViewById(R.id.contactName);
number = (TextView) retval.findViewById(R.id.contactNumber);
title.setText(text to display in list);
number.setText(""+position);//add row number to list //fixed the variable
}