0

タップ後にループ内でウィジェット アイテムをレンダリングします DetailsActivity を開始したい (そのアクティビティに ID を送信する必要があります)

Cursor currentCursor = dbHelper.getWidgetCursor();
for(int k=0; k < currentCursor.getCount(); k++){
    currentCursor.moveToPosition(k);

    RemoteViews rw = new RemoteViews(context.getPackageName(), R.layout.w_calendar_item);

    Intent intentRow = new Intent(context, DetailsActivity.class);
    Log.v("a", "index: "+currentCursor.getInt(currentCursor.getColumnIndex(SqlHelper.COLUMN_ID)));
    intentRow.putExtra("index", currentCursor.getInt(currentCursor.getColumnIndex(SqlHelper.COLUMN_ID)));
    PendingIntent pendingIntentRow = PendingIntent.getActivity(context, 1, intentRow, PendingIntent.FLAG_CANCEL_CURRENT);
    rw.setOnClickPendingIntent(R.id.w_li, pendingIntentRow);

    views.addView(R.id.w_list, rw);
}

私の問題は、DetailsActivity が常にインデックス 103 (リストの最後) を受け取ることです。どの項目をタップしても関係ありません。

4

1 に答える 1

0

これは、 PendingIntent.getActivity でPendingIntent.FLAG_CANCEL_CURRENTフラグを設定したためです。行ごとに、Android は前の保留中のインテントをキャンセルするため、当然、最後のインテントが「存続」します。おそらく、そのフラグを削除するだけで機能しますか?私は RemoteViews の経験がないので、それが役に立たない場合の最善の方法がわかりません。

于 2012-05-24T13:25:52.453 に答える