通过适配器仅在一行上的ListView行中显示TextView

时间:2013-01-16 16:30:45

标签: android listview android-view simplecursoradapter listadapter

我想要突出显示当时只有一行,我这样做是为了让TextView可见(或使用BadgeView库,我在第一次尝试时使用但产生了这个bug,我认为它是图书馆的缺陷/错误。)

这是我的方法:(我已在我的SimpleCursorAdapter中覆盖此方法)

@Override
public void bindView(View view, Context context, Cursor cursor) {
    super.bindView(view, context, cursor);

    int rowId = Integer.valueOf(((TextView) view.findViewById(R.id.two_line_rowid)).getText().toString());

    if (rowId == mRowIdSelected) {
        ((TextView) view.findViewById(android.R.id.text1)).setText("SELECTED");
        ((TextView) view.findViewById(R.id.select_badge)).setVisibility(View.VISIBLE);
    }

}

它工作得很好,但有一个错误。 android.R.id.text1中的文字仅在所选行中发生变化,这是按预期工作的,但TextView在第一行所选行中可见,这是不按预期工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

@Override
public void bindView(View view, Context context, Cursor cursor) {
    super.bindView(view, context, cursor);

    int rowId = Integer.valueOf(((TextView) view.findViewById(R.id.two_line_rowid)).getText().toString());

    if (rowId == mRowIdSelected) {
        ((TextView) view.findViewById(android.R.id.text1)).setText("SELECTED");
        ((TextView) view.findViewById(R.id.select_badge)).setVisibility(View.VISIBLE);
    } else {
        ((TextView) view.findViewById(android.R.id.text1)).setText("NOT-SELECTED");
        ((TextView) view.findViewById(R.id.select_badge)).setVisibility(View.INVISIBLE);
    }

}

您能提供传递视图的布局吗?