在Spinner上执行click事件以在onItemSelected中执行代码

时间:2012-09-15 16:00:58

标签: java android android-layout android-spinner

我想在完全加载活动后自动点击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);

但这不起作用。有人能告诉我如何自动点击旋转元素吗?当我在应用程序中选择旋转项目而不是触摸事件时,一切正常。

此致 桑德罗

2 个答案:

答案 0 :(得分:0)

我不认为你是从你发布的代码中调用setUpSpinnerListener。即使你正在调用它,我也不认为将runnable发布到setuplistener是有利的。

将runnable中的所有代码移至setAdapter

之后

答案 1 :(得分: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