친구들.Android : EditText에서 ListView 업데이트
State 패턴을 구현하는 앱 모듈이 있습니다. 아이디어는 다음과 같습니다 1. 사용자는 날짜 입력 - NE 상태로> 2. 화면의 변화를 동적으로 목록보기 팽창 및
문제는 일부 데이터 목록을 채우기 위해 사용자에게 요청하는 난에서 notifyDataSetChange()를 호출 할 때 두 번째 방법을 업데이트, EditText보기 dont't는 더 이상 그 기능을하고 싶지 않습니다.
이것은 내 문제의 핵심을 포함하고 있다고 생각되는 logcat의 문자열입니다. 33 :
09-10 10 38.937 26954-26954/com.example.android.turtleinfo의 D/ListView에 : 변경 접근성 포커스 위치 = 0 여기서
모든 것을위한 코드이다.
1. 내 주 패턴 슈퍼 클래스
public abstract class ScreenState
{
public BuilderActivity activity;
public ScreenState(BuilderActivity activity) {
this.activity = activity;
//initializeScreen(activity);
}
public abstract void initializeScreen(Activity activity);
public abstract void switchState();
public abstract void updateText(View view);
public void addTextWatcher(EditText text) {
text.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
activity.state.updateText(v);
return true;
}
return false;
}
});
}
}
2. 초기화 화면의 구현 및 때문에 updateData 방법
@Override
public void initializeScreen(Activity activity) {
((BuilderActivity) activity).editText.setHint("Name");
addTextWatcher(((BuilderActivity) activity).editText);
textView = (TextView)activity.getLayoutInflater().inflate(R.layout.schedule_text_style, null);
textView.setHeight(100);
screenText = "End Date: " + new SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH).format(((BuilderActivity) activity).data.getEndDate())+"\n\n";
textView.setText(screenText+"\n");
((BuilderActivity) activity).scheduleLayout.addView(textView);
((BuilderActivity) activity).data.setNames(new ArrayList<String>());
lv = (ListView)activity.getLayoutInflater().inflate(R.layout.listview_text_style, null);
listItems = new ArrayList<>();
adapt = new ArrayAdapter<>(super.activity, R.layout.schedule_text_style, listItems);
lv.setAdapter(adapt);
((BuilderActivity) activity).scheduleLayout.addView(lv);
}
@Override
public void updateText(View view) {
String text = activity.editText.getText().toString();
if (text.length() >= 2) {
if (!activity.data.names.contains(text)) {
activity.data.addToList(text);
listItems.add(text);
adapt.notifyDataSetChanged();
activity.editText.setText("");
counter++;
activity.editText.setText("");
} else {
Toast.makeText(activity, "same names are not allowed",
Toast.LENGTH_LONG).show();
((BuilderActivity) activity).editText.setText("");
}
}
else
{
Toast.makeText(activity, "name should contain 2 or more symbols",
Toast.LENGTH_LONG).show();
((BuilderActivity) activity).editText.setText("");
}
}
가 보이는 방법이있다 장치.
1. 먼저 삽입
2
확인을 불허 또한 insertionas 불가능하다. 내가 다음 확인을 클릭하면 softkeyboard 버튼 NEXT 버튼
3. 먼저 전환, 글고 아무 일도 발생하지 않습니다 초점을 푼다하지만 다음 버튼 스위치에 '/ N'버튼을 누릅니다. 누구나 알고있는 경우
그래서, 내가 worng 뭐하는 거지, 도와주세요!
미리 감사드립니다.