2

アプリに機能する検索インターフェースがあります。現在、各検索結果リストアイテムをクリック可能にして、新しいアクティビティに表示しようとしています。ListAdapterクリック可能ですが、値(レコード)をメソッドに渡す方法がわかりませんonItemClick

これまでの私のコードは次のとおりです。

private void showResults(String query) {
    Cursor cursor = DBHelper.searchDB(query);
    startManagingCursor(cursor);
    String[] searchFrom = new String[] { DBAdapter.KEY_MAKE,
            DBAdapter.KEY_YEAR, DBAdapter.KEY_MAKE,
            DBAdapter.KEY_MODEL };
    int[] displayHere = new int[] { R.id.rDateTV, R.id.rYearTV,
            R.id.rMakeTV, R.id.rModelTV };

    final SimpleCursorAdapter records = new SimpleCursorAdapter(this,
            R.layout.record_2, cursor, searchFrom, displayHere);

    setListAdapter(records);
    DBHelper.close();

    // --- Click on list item ---


    ListView clickList = getListView(); 
    clickList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)        {
            //--- here's the problem: how do I pass the ListAdapter values into onItemClick. the below doesn't like .getText()
            String sYear = (view.findViewById(R.id.rYearTV)).getText().toString();
            String sMake = (view.findViewById(R.id.rMakeTV)).getText().toString();
            String sModel = (view.findViewById(R.id.rModelTV)).getText().toString();

            // -- then pass these strings to an intent to launch a new activity




        } 
    });


    // --- END click on list item ----

}

何か案は?私はここでは新人なので、コードを見せていただければ、AWSOMEになります。

4

1 に答える 1

2

OnItemClickListener.onItemClick呼び出し中parent.getItemAtPosition(position)。このメソッドは、指定された位置に設定されているカーソルを返します。次に、そのカーソルからデータを取得します。内のカーソルを閉じないでくださいOnItemClickListener.onItemClick

例えば:

ListView clickList = getListView(); 
    clickList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)        {
            Cursor c = (Cursor)parent.getItemAtPosition(position)
            String sMake = c.getString(c.getColumnIndexOrThrow(DBAdapter.KEY_MAKE));//get data from cursor

           ...
        } 
    });
于 2012-09-25T20:30:51.690 に答える