0

私のアプリケーションには、データベースのコンテンツを表示する Listview があります。これはカスタムのクリック可能なリストビューで、リストビューのすべての要素にボタンを追加したいので、このボタンをクリックすると、電話がかかってきて特定の番号がダイヤルされます。

同様のトピックをいくつか読んだことがありますが、すべてアダプターの「getView」メソッドに言及していますが、それが何を指しているのかわかりません。リストビューに関連するコードは次のとおりです。

private void displayListView() {

    // getExtra
    Bundle bundle = getIntent().getExtras();
    String title = bundle.getString("title", "Choose here :");
    String inInterval = bundle.getString("inInterval");
    Log.d(TAG, "inInterval = " + inInterval);

    poititle.setText(title);


    // put the results of the method in a cursor
    Cursor c = dbHelper.findPoiInTable(inInterval);

    String[] columns = new String[] { DatabaseAdapter.COL_NAME,
            DatabaseAdapter.COL_STREET, DatabaseAdapter.COL_WEBSITE,
            DatabaseAdapter.COL_TELEPHONE, DatabaseAdapter.COL_REMARKS,
            DatabaseAdapter.COL_PRICE };

    int[] to = new int[] { R.id.name, R.id.street, R.id.website,
            R.id.telephone, R.id.remarks, R.id.price };

    cursorAdapter = new SimpleCursorAdapter(this, R.layout.poi_info, c,
            columns, to, 0);

    ListView listView = (ListView) findViewById(R.id.poilistview);
    // Assign adapter to ListView
    listView.setAdapter(cursorAdapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        // Comportement des éléments de la listview
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            Intent i = new Intent(getApplicationContext(),
                    POIActivity.class);

            String name = ((TextView) view.findViewById(R.id.name))
                    .getText().toString();
            String website = ((TextView) view.findViewById(R.id.website))
                    .getText().toString();
            String telephone = ((TextView) view
                    .findViewById(R.id.telephone)).getText().toString();
            String remarks = ((TextView) view.findViewById(R.id.remarks))
                    .getText().toString();
            String price = ((TextView) view.findViewById(R.id.price))
                    .getText().toString();
            // i.putExtra(ID_EXTRA, name) ;
            i.putExtra(ID_NAME, name);
            i.putExtra(ID_WEBSITE, website);
            i.putExtra(ID_TELEPHONE, telephone);
            i.putExtra(ID_REMARKS, remarks);
            i.putExtra(ID_PRICE, price);
            startActivity(i);


        }

    }); }

XML ファイルでのボタンの定義は次のとおりです。

<Button
    android:id="@+id/callButton"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_centerVertical="true"
    android:layout_marginRight="10dp"
    android:layout_toLeftOf="@+id/arrowImage"
    android:text=" Call "
    android:textSize="15sp" 
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:descendantFocusability="blocksDescendants" /> 

もちろん、リスナーを設定する通常の方法(.setOnClickListenerなど)を試しましたが、実際にはdisplayListView()メソッドから何かを行う必要があると思います。
前もって感謝します !

4

1 に答える 1

1

メソッドを使用せずにボタンのクリックを設定することgetViewは不可能です。アダプターの操作方法を理解する必要があります。すべてのアダプターにはgetView、パラメーターとして位置を取得するメソッドが呼び出され、アダプターはこの位置にある必要があるビューを返します。SimpleCursorAdapterとそのgetViewメソッドをオーバーライドする必要があり、ビュー ( R.layout.poi_info) を作成するときに、クリック リスナーをボタンに割り当てる必要があります。ここで行ったことは、リスト (ボタンではなく) から項目をクリックすると、リスナーが起動することです。とにかく、これは多くの議論があるテーマであり、Google で簡単に検索すると答えが得られます。これが私が見つけたチュートリアルです: http://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/

幸運を

編集 - 例:

ここで使用したことに注意してくださいnewView。アダプターについて詳しく読んだ後、CursorAdapter について読んでください。それが何であるかを理解できます。このアダプタの動作は少し異なります。

public class ExtendedSimpleCursorAdapter extends SimpleCursorAdapter{

        public ExtendedSimpleCursorAdapter(Context context, int layout,
                Cursor c, String[] from, int[] to, int flags) {
            super(context, layout, c, from, to, flags);

        }

        public View newView (Context context, Cursor cursor, ViewGroup parent){
            View v = super.newView(context, cursor, parent);
            v.findViewById(R.id.your_button_id).setOnClickListener(yourClickListener);
        }
    }
于 2013-04-03T09:45:30.853 に答える