私は非常に基本的な例で、スピナーの項目を選択することができ、選択した項目に応じて、画像ビューに対応する画像が表示されます。ボタンをクリックするとテキストビューの単語が1つ変更されます
また、デフォルトで「アイテムを選択」と言うテキストビューがあり、アイテム1が選択されている場合、このテキストビューには「アイテム1の名前はありません」と表示され、アイテム2が選択されると、 2はありません "。
私はeditextとボタンを持っていて、editextに名前を入力したいのですが、editext(例えばJohn)に名前を入力してボタンをクリックすると、textview 「item1の名前はjohnです」に変更されます。私は下のコードを試していますが、動作しません。あなたは解決する方法を知っていますか?
例:「john」と入力してボタンをクリックすると、「item2の名前がjohn」と表示されるのではなく、「john item2の名前がnone」と表示されます。
活動のxml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.ricardorei.tpc.MainActivity">
<Button
android:id="@+id/button3"
android:layout_width="0dp"
android:layout_height="48dp"
android:text="Button"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="166dp"
android:layout_marginRight="56dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="58dp"
android:onClick="addName"/>
<ImageView
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="220dp"
android:layout_marginBottom="16dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<Spinner
android:id="@+id/spinner2"
android:layout_width="200dp"
android:layout_height="30dp"
android:layout_marginLeft="32dp"
android:layout_marginRight="8dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:entries="@array/spinner_values"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintBaseline_toBaselineOf="@+id/button3"
tools:layout_editor_absoluteX="32dp" />
<TextView
android:id="@+id/textView4"
android:layout_width="391dp"
android:layout_height="51dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.369"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.48" />
</android.support.constraint.ConstraintLayout>
文字列のxml:
<resources>
<string name="app_name">tpc</string>
<string-array name="spinner_values">
<item>Select</item>
<item>item1</item>
<item>item2</item>
</string-array>
</resources>
コード:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spinner = (Spinner) findViewById(R.id.spinner2);
String string = String.valueOf(spinner.getSelectedItem());
final ImageView image = (ImageView)findViewById(R.id.image);
final TextView txt = (TextView) findViewById(R.id.textView4);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
txt.setText("Select an item");
image.setImageResource(R.drawable.bg);
break;
case 1:
txt.setText("The name of item1 is none");
image.setImageResource(R.drawable.item1);
break;
case 2:
txt.setText("The name of item2 is none");
image.setImageResource(R.drawable.item2);
break;
default:
//Default image
//image.setImageResource(R.drawable.item2);
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public void addName(View view) {
EditText editext = (EditText) findViewById(R.id.editText2);
TextView txt = (TextView) findViewById(R.id.textView4);
txt.setText(txt.getText().replace(5, 1, editext.getText()));
}
「**働いていない」ということはどういう意味ですか?ボタンをクリックすると何が行われますか? – kRiZ
"john"と書いてボタンをクリックすると、 "item2の名前がjohn"と表示されるのではなく、 "john item2の名前がnone"と表示されます。 – JonD
実際には、スピナーの名前と位置を保存して、それに基づいて文字列を置換する必要があります。 –