私はスピナーをいくつか持っています。 1つはテキスト選択用、もう1つはテキストカラーを変更するためのものです。また、ユーザーが選択をしたときに選択した項目を設定するグローバルなテキストビューもあります。 私のカラースピナーからフォントの色を選択すると、グローバルなテキストビューの色が変わったように変わります。次に、mt textview spinnerで別のテキストビューを選択し、同じ色を選択すると、新しく選択されたテキストビューカラーが変更されません。かなり奇妙な。しかし、最後に使用した色とは異なる色を選択すると、新しく選択したテキストビューの色が変わります。 各色の変更後にnotifydatachanged()をカラーアダプタで呼び出そうとしましたが、動作しませんでした。何か回避策はありますか? ここにコードがあります。スピナーが選択した項目が2回目の選択に反応しない
private void setUpColorSpinner() {
// Create an ArrayAdapter using the string array and a default spinner layout
final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.font_colors, R.layout.spinner_list_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Apply the adapter to the spinner
fColorspinner.setAdapter(adapter);
fColorspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long l) {
switch (parent.getSelectedItemPosition()) {
case 0:
//leave it blank to set the color to the default color
setFontColor(ContextCompat.getColor(context, R.color.WHITE));
adapter.notifyDataSetChanged();
break;
case 1:
setFontColor(ContextCompat.getColor(context, R.color.BLACK));
adapter.notifyDataSetChanged();
break;
case 2:
setFontColor(ContextCompat.getColor(context, R.color.WHITE));
adapter.notifyDataSetChanged();
break;
case 3:
setFontColor(ContextCompat.getColor(context, R.color.BLUE));
adapter.notifyDataSetChanged();
break;
case 4:
setFontColor(ContextCompat.getColor(context, R.color.GREEN));
adapter.notifyDataSetChanged();
break;
case 5:
setFontColor(ContextCompat.getColor(context, R.color.Yellow));
adapter.notifyDataSetChanged();
break;
case 6:
setFontColor(ContextCompat.getColor(context, R.color.RED));
adapter.notifyDataSetChanged();
break;
case 7:
setFontColor(ContextCompat.getColor(context, R.color.PURPLE));
adapter.notifyDataSetChanged();
break;
case 8:
setFontColor(ContextCompat.getColor(context, R.color.ORANGE));
adapter.notifyDataSetChanged();
break;
case 9:
setFontColor(ContextCompat.getColor(context, R.color.OLIVE));
adapter.notifyDataSetChanged();
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
private void setUpTextViewsSpinner() {
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> cardtext = ArrayAdapter.createFromResource(this, R.array.textviews,
R.layout.spinner_list_item);
// Specify the layout to use when the list of choices appears
cardtext.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
fTextViewsspinner.setAdapter(cardtext);
final DisplayMetrics tvsmetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(tvsmetrics);
fTextViewsspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
switch (adapterView.getSelectedItemPosition()) {
case 0:
//selectedText.setText("");
break;
case 1:
selectedText = text1;
break;
case 2:
selectedText = text2;
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
コードを表示できますか? –
これらのメソッドはどのクラスに含まれていますか?有効なJava構文で表示してください: 'class MyClass {... methods go here ...}'。また、いつこれらのメソッドを呼びますか? –
これらは主なアクティビティクラスに含まれています。 –