1

アクティビティが完全にロードされた後、Spinner 要素のクリックを自動的に実行したいと考えています。

このコードを使用して、スピナーとアダプターをセットアップします。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_read_data);
        getActionBar().setDisplayHomeAsUpEnabled(true);

        mSpinnerDay = (Spinner) mTable.findViewById(R.id.spieltag_choice);
        mAdapterSpinnerDay = new ArrayAdapter<CharSequence>(this, R.layout.custom_spinner);
        mAdapterSpinnerDay.setDropDownViewResource(R.layout.custom_spinner);
        mSpinnerDay.setAdapter(mAdapterSpinnerDay);


}


    private void setUpSpinnerListener(final IGameData data) {
    mSpinnerDay.post(new Runnable() {
        public void run() {
        mSpinnerDay.setOnItemSelectedListener(new OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            for (GameDayData d : data.getGameDay()) {
                if (d.getName().equals(adapterView.getSelectedItem().toString())) {
                TableRow row = (TableRow) mTable.findViewById(R.id.row_punkte_tag);
                TextView t = (TextView) row.findViewById(R.id.punkte_tag);
                t.setText("Punkte: " + d.getScore());
                TableRow row2 = (TableRow) mTable.findViewById(R.id.row_position_tag);
                TextView t2 = (TextView) row2.findViewById(R.id.position_tag);
                t2.setText("Position: " + d.getPosition());
                return;
                }
            }
            }

            public void onNothingSelected(AdapterView<?> adapterView) {
            return;
            }
        });
        }
    });
}

public void onTeamCheckReadComplete(IGameData data) {
    for (GameDayData d : data.getGameDay()) {
        mAdapterSpinnerDay.add(d.getName());
    }
}

アダプターをスピナーに設定した後、次のコードでクリックを実行しようとしました:

mSpinnerDay.setSelection(0, true);
    View view = (View)  mSpinnerDay.getChildAt(0);
    long id = mSpinnerDay.getAdapter().getItemId(0);
    mSpinnerDay.performItemClick(view, 0, id);

しかし、これはうまくいきません。スピナー要素のクリックを自動的に実行する方法を誰か教えてもらえますか? アプリケーションでスピナーアイテムをタッチイベントで選択すると、すべて正常に動作します。

よろしく、サンドロ

4

2 に答える 2

0

修正された解決策 私が理解しているように、アイテムA、B、C、およびDを備えたスピナーがあります。アイテムAを事前に選択する必要があります。また、ユーザーがA、B、C、およびDを選択し、それに基づいてアクションを実行できるようにする必要があります。

onCreate()メソッドの場合:

mSpinner.setAdapter(myAdapter);
mSpinner.setOnItemSelectedListener(this); // have the activity implement
                                          // OnItemSelectedListener interface
doAction(0);

次に、次のようにonItemSelectedアクションを実装します。

@Override
void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    doAction(position);
}

アダプタ内のアイテムの位置に基づいてアクティビティを更新する方法を処理するには、doAction(int position)メソッドを実装する必要があります。クリア?

このアイテムとその使用方法の詳細については、http: //developer.android.com/reference/android/widget/AdapterView.OnItemSelectedListener.htmlをご覧ください。

于 2012-09-15T16:39:17.587 に答える
0

setUpSpinnerListener投稿したコードから呼び出しているとは思いません。あなたがそれを呼んでいても、ランナブルをsetuplistenerに投稿することは有利だとは思いません。

runnable のすべてのコードを直後に移動しますsetAdapter

于 2012-09-15T16:11:45.543 に答える