当移动到下一个值并返回当前活动时,编辑的文本值是清除的

时间:2017-03-07 08:59:50

标签: android

我有一个列表视图和编辑文本的活动。 这里当我必须从listview获取数据时,textview上有一个click事件,其中存储了listview中的获取数据。 但问题在于 当我从listview中选择数据时,编辑文本输入的数据已清除 所以 我该怎么办 如果我想从我从另一个活动中选择listview数据回来后想要我的编辑文本数据。

我在点击事件中尝试了完成(),但它的工作正在被清除。

提前致谢。

2 个答案:

答案 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") ;

希望它有所帮助。