На данный вопрос уже ответили:
Как сократить данный код?
Или как сделать парсер данных (вопрос - ответ) из локального .html/txt файла, в котором будет например данное содержимое meow - wow, stack - overflow и т.д.? (Приложение будет черпать данные из файла)
MainActivity.java
public class MainActivity extends AppCompatActivity implements TextWatcher {
EditText editText;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText=findViewById(R.id.editText);
textView=findViewById(R.id.textView);
editText.addTextChangedListener(this);
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if(charSequence.toString().equals("meow")) textView.setText("wow");
if(charSequence.toString().equals("stack")) textView.setText("overflow");
if(charSequence.toString().equals("bang")) textView.setText("boom");
if(charSequence.toString().equals("hello")) textView.setText("bye");
if(charSequence.toString().equals("meow")) textView.setText("wow");
}
@Override
public void afterTextChanged(Editable editable) {
}
}
Самое просто решение - объявить таблицу:
private static Map<String, String> mTexts = new HashMap<String, String>() {
private static final long serialVersionUID = 3400090779728367346L;
{
put("meow", "wow");
put("stack", "overflow");
}
};
private static String getText(String key) {
return mTexts.get(key);
}
И тогда onTextChanged
будет таким:
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
String text = getText(charSequence.toString());
if(text != null)
textView.setText(text);
}
Решение получше:
Метод getText
вместо обращения к Map
будет обращаться к этому файлу и брать значение по имени:
public static String getText(Context context, String key) {
Resources res = context.getResources();
return res.getString(res.getIdentifier(key, "string", context.getPackageName()));
}
onTextChanged
теперь будет таким:
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
String text = getText(this, charSequence.toString());
if(text != null)
textView.setText(text);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Новичок в андройд-разработке, мне нужно сделать скролл списка пользователей в виде плитки, чтобы "за раз" было видно 6 пользователейПодскажите,...
Обновил Gradle и он перестал видеть две сторонние библиотеки, которые были добавлены через "File dependency" (те