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

我不认为你是setUpSpinnerListener从你发布的代码中调用的。即使您正在调用它,我认为将可运行对象发布到 setuplistener 也没有好处。

将 runnable 中的所有代码移到后面setAdapter

于 2012-09-15T16:11:45.543 回答
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 回答