活动Textview值更改时片段刷新

时间:2018-06-17 20:05:37

标签: android fragment

我想知道如何在用户更改城市名称时更新片段的片段recyclelerview数据。

假设我在我的活动中有一个textview(其中包含城市名称)我使用intent将textview的值发送到片段,这是第一次它的工作正常但是当textview的值改变了片段recyclelerview时数据不会根据textview值(即城市名称)进行更新。

为了更好地理解,我举了一个例子。

假设在我的textview中,城市名称首次设置为MUMBAI,数据从数据库到recyclerview完全正常,但是当texview值更改为假设Pune时,片段recyclelerview数据将不会根据城市名称进行更新。 / p>

根据城市名称,工作与OLX获取结果相同。

提前谢谢你,希望我能正确解释。

2 个答案:

答案 0 :(得分:0)

我会在活动中的textView中添加一个textChangeListener,并在片段内创建一个方法来接收数据并更新片段。

或许这样的事情:

    Fragment frag = ...
    tv.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            ...
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            ...
        }

        @Override
        public void afterTextChanged(Editable s) {
            frag.updateSomething("some argument");   
        }
    });

答案 1 :(得分:0)

创建 UpdateCallback 界面:

interface UpdateCallback {
   public void update(String s);
}

在片段上实施更新方法:

class MyFragment Extends Fragment implements UpdateCallback {
     @Override
     public void update(String s){
         ...
     }
}

最后在 afterTextChanged()

中调用方法
textView.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        ...
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        ...
    }

    @Override
    public void afterTextChanged(Editable s) {
        myFragment.update(s);   
    }
});