我是新來的android開發。我有一個EditText
,一個Button
和一個ListView
。當我點擊按鈕時,我想將字符串值添加到ListView
。我有這個偉大的工作。當鍵盤被隱藏時,ListView不會更新按鈕點擊
但是,如果我按照以下順序執行此操作,那麼UI會得到奇怪的結果。如果我鍵入一些文字,通過點擊電話隱藏鍵盤,然後單擊該按鈕,ListView
不會更新爲新項目。該項目已被添加到數據源(List<String>
),因爲如果我再次添加另一個項目而沒有隱藏鍵盤,則我上次輸入的項目會與最新項目一起出現。
這是我單擊按鈕時的代碼。
public void AddName(View view) {
EditText editText = (EditText) findViewById(R.id.txtAddName);
list.add(editText.getText().toString());
editText.setText("");
hideSoftKeyboard(MainActivity.this, view);
}
//This takes focus away from the EditText and hides the keyboard.
public static void hideSoftKeyboard (Activity activity, View view) {
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);
}
這裏是我填寫ListView
。注意GetList()
只是返回list
與其中的默認值。
public class MainActivity extends Activity {
private List<String> list = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView) findViewById(R.id.lvNames);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, GetList());
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
final String item = (String) parent.getItemAtPosition(position);
view.animate().setDuration(2000).alpha(0).withEndAction(new Runnable() {
@Override
public void run() {
list.remove(item);
adapter.notifyDataSetChanged();
view.setAlpha(1);
}
});
}
});
}
後更換您的list.add適配器和當你更新你的ListView的代碼。 – JJ86