我有一个列表视图和编辑文本的活动。 这里当我必须从listview获取数据时,textview上有一个click事件,其中存储了listview中的获取数据。 但问题在于 当我从listview中选择数据时,编辑文本输入的数据已清除 所以 我该怎么办 如果我想从我从另一个活动中选择listview数据回来后想要我的编辑文本数据。
我在点击事件中尝试了完成(),但它的工作正在被清除。
提前致谢。
答案 0 :(得分:0)
只要数据发生变化,就将这些数据存储在数组中。您可以使用以下逻辑,我通常在我的项目中使用
private boolean programmaticalTextChange = false;
private KeyEvent UnknownKey = new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_UNKNOWN);
public class MyTextWatcher implements TextWatcher
{
private EditText editText;
public MyTextWatcher(EditText editText)
{
this.editText = editText;
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (!programmaticalTextChange)
editText.dispatchKeyEvent(UnknownKey);
}
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
//...
myEditText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
updateItem(item, v, rowView);
return false;
}
});
myEditText.addTextChangedListener(new MyTextWatcher(myEditText));
}
protected void updateItem(MyClass item, View v) {
try {
item.Name = ((EditText) v).getText()
.toString());
} catch (Exception e) {
}
}
答案 1 :(得分:0)
有很多选择。您可以使用共享首选项。当您进入该活动时,可以通过执行
创建共享首选项对象 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
您可以通过执行此操作来存储编辑文本视图中的文本
editor.putString("MyPreference", edittext.getText());
当你回到原来的活动时,你可以做到
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String myEditText = preferences.getString("MyPreference") ;
希望它有所帮助。