0

CursorLoader によってサポートされる ListView を作成しました。ListView 内の項目をクリックすると、強調表示されたままになります。

xml は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ListView
    android:id="@android:id/list"
    android:choiceMode="singleChoice"
    android:listSelector="@android:color/darker_gray"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

私の問題は、別のフラグメントで、内部データベースに変更を加えるデータを編集すると、SyncAdapter が実行されると、選択した項目が自動的に選択解除されるように見えることです。誰もそのような問題の経験がありますか?

編集:

フラグメントのコードは次のとおりです。

public class BidItemsFragment extends ListFragment implements
LoaderManager.LoaderCallbacks<Cursor> {

public static final String ITEM_TYPE_BIDITEM= "B";

private SimpleCursorAdapter mAdapter;
private ListView mList;
private Context mContext;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    mContext = getActivity();
    fillData();
    View v = inflater.inflate(R.layout.biditems_list, container, false);
    mList = (ListView) v.findViewById(android.R.id.list);
    return v;
}

private void fillData() {

    String[] from = new String[] { Columns.COLUMN_ITEMNUMBER };
    int[] to = new int[] { R.id.biditem_num };
    getLoaderManager().initLoader(0, null, this);
    mAdapter = new SimpleCursorAdapter(mContext, R.layout.biditems_row, null, from, to, 0);

    setListAdapter(mAdapter);
}

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
    String[] projection = Columns.getColumns(RawContract.PARAM_SEBIDITEM);
    String selection = Columns.COLUMN_SYSID + "=?";
    String selectionArgs[] = { "1" };
    CursorLoader cursorLoader = new CursorLoader(mContext,
            BidProvider.CONTENT_URI_SEBIDITEM, projection, selection, selectionArgs, null);
    return cursorLoader;
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    mAdapter.swapCursor(data);
}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
    mAdapter.swapCursor(null);
}
}
4

0 に答える 0