Maybeok Ответов: 2

Значение счетчика, основанное на автоматическом вводе edittext


Я хотел бы показать значение счетчика из ввода edittext.
Пример. если я введу значение x в edittext, то spinner должен показать значение x без нажатия какой-либо кнопки.

У меня есть код, который вставляет значение edittext в spinner, нажав кнопку, в то время как я хотел бы изменить свой spinner автоматически при вводе входного значения в edittext

Что я уже пробовал:

<pre><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<Spinner

android:id="@+id/spinner1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_alignParentTop="true"

android:layout_marginLeft="34dp"

android:layout_marginTop="74dp" />

<Spinner

android:id="@+id/spinner2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_alignParentTop="true"

android:layout_marginTop="74dp"

android:layout_marginRight="34dp" />

<EditText

android:id="@+id/editText1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_alignParentTop="true"

android:layout_marginTop="19dp"

android:ems="10"

android:inputType="textPersonName" />

<Button

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBottom="@+id/editText1"

android:layout_alignParentRight="true"

android:text="Button" />
</RelativeLayout>
Ява
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

public class MainActivity extends Activity {

List<String> li;
Spinner sp1,sp2;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

li=new ArrayList<String>();

li.add("Data 1");
li.add("Data 2");

sp1=(Spinner) findViewById(R.id.spinner1);
sp2=(Spinner) findViewById(R.id.spinner2);
Button b=(Button) findViewById(R.id.button1);
final EditText et=(EditText) findViewById(R.id.editText1);
call();

b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
li.add(et.getText().toString());
et.setText(null);
call();
}
});
}

public void call() {
// TODO Auto-generated method stub

ArrayAdapter<String> adp=new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line,li);
adp.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
sp1.setAdapter(adp);
sp2.setAdapter(adp);
sp1.setSelection((li.size()-1));


sp1.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
// TODO Auto-generated method stub
sp2.setSelection(arg2);
}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

David Crow

Я опубликовал решение очень похожего вопроса здесь.

2 Ответов

Рейтинг:
2

wseng

Цитата:
я хотел бы изменить свой счетчик автоматически при вводе входного значения в edittext

Что вам нужно для вашего editText является Наблюдатель За Текстом


Maybeok

edittext используется для поиска данных из базы данных...

wseng

Добавить call функция в TextWatcher editText. Как только в editText появится значение, функция будет вызвана.

Maybeok

я пытался, но приложение перестало работать. есть ли у вас какой-нибудь пример кода, которого было бы достаточно, чтобы продолжить работу дальше..

wseng

пожалуйста, отредактируйте свой пост, разместив последний код и сообщение об ошибке.

Maybeok

Привет, я не эксперт в textwatcher. пожалуйста посоветуйте с вашим опытом

Рейтинг:
0

Maybeok

et.addTextChangedListener(new TextWatcher() {

          public void onTextChanged(CharSequence s, int start, int before, int count) {
               {

                 call();


             }


          }

          public void afterTextChanged(Editable s) {

          }

          public void beforeTextChanged(CharSequence s, int start, int count, int after) {
          }


      });


wseng

какое сообщение об ошибке вы получаете ?

wseng

Вы можете обратиться https://stackoverflow.com/questions/29261532/adding-item-from-edit-text-to-spinner чтобы получить значение editText добавьте его в spinner

Maybeok

привет wseng ответ на ссылку уже есть в моих деталях но то что я ищу это без нажатия кнопки данные edittext должны отображаться в spinner

Maybeok

отсутствие ошибки как таковой при вводе текста в edittext я имею в виду отсутствие реакции ..

wseng

Можете ли вы поместить этот метод в afterTextChanged?

Maybeok

такой же никакой реакции... public void afterTextChanged(редактируемые s) {
вызов();
}

Maybeok

Здравствуйте, эксперты по android нуждаются в вашем любезном внимании...

wseng

пожалуйста, опубликуйте свой полный код