0

つまり、基本的にデータベースからのレコードがあり、各レコードには独自の一意のID(主キー)とその日付(mm:hh mm / dd / yy)があります。これらのレコードをアプリのリストビューに表示したいと思います。しかし、時間(mm:hh)があるのはちょっと醜いので、リストにmm / dd / yyのみを表示することにしました。ここで問題は、onitemClickをプログラムするときに、どのアイテムがクリックされているかを確認する方法です。 ?? 一意のIDと正確な日付がリストに表示されなくなったためです。

ArrayList<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map;

        for (int x = Records.size()-1; x >=0; x--)
        {
            map = new HashMap<String, String>();
            map.put("ID", String.valueOf(Records.get(x).getId()));
            map.put("date", Records.get(x).getDate()); //I am going to change this date to just mm/dd/yy


            aList.add(map);
        }

        sd = new SimpleAdapter(this, aList, R.layout.historyactivityrow,
                new String[]
                { "date" }, new int[]              
                { R.id.date });

        lv.setAdapter(sd);

        lv.setOnItemClickListener(new OnItemClickListener()
        {

            public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                    long arg3)
            {
                TextView tx = (TextView) view.findViewById(R.id.date);
                String s = tx.getText().toString();
                Intent intent = new Intent(HistoryActivity.this, EditRecordActivity.class);          
                intent.putExtra("date", s); //I can't do this anymore because now the EditRecordActivity will not know the exact record to be edited.
                startActivity(intent);

            }
        });

助けてください。

4

2 に答える 2

2

arg2( http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.htmlをクリックしたアイテムの位置)を使用して、arrayListから適切なマップを取得しないのはなぜですか?

例えば:

long rowID = (aList.get(arg2)).get("ID");

私はセットアップを間違って解釈しているかもしれませんが、おそらくこれはあなたを正しい方向に導くでしょう。

于 2012-08-08T22:00:59.313 に答える
0

それはすべてOnItemClickListener()にあります

public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                long arg3)

正解です。一意のIDはありませんが、を使用して一意のIDを変更できCursorAdapterますLoaderManager。CursorLoaderを使用する場合、引数long arg3は一意のIDになります。これは、、およびおそらくとCursorLoader一緒に使用するための優れた追加の利点ですが、これを説明しているので、いくつかの調査を行うことができます。それをどのように行うことができるかについては、いくつかの選択肢があります。アイテムをに入れるときに、一意のIDのタグを付けることができます。これは、現在持っているもので実装するための余分なコードではありません。他のオプションは、の位置を確認することです。LoaderManagerContentProviderListViewsetTag()int arg2ListView。欠点は、データベースからの一意のIDがないことです。しかし、それはあなたが必要とするかもしれないリストからどれが何であるかをあなたに伝えます。IDが必要な場合は、前者を使用します。

それが役に立てば幸い。

于 2012-08-08T21:52:10.830 に答える