ListView中的行号

时间:2013-01-05 12:14:57

标签: android listview

我有一个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。可以有人告诉我如何解决这个问题?

3 个答案:

答案 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
        }