Android-通过另一个片段

时间:2015-05-22 23:07:35

标签: android listview android-fragments android-listview

我在这里遇到了问题。正如标题所说,我想更新一个片段中的列表视图,从另一个片段的edittext中添加一个值。我的主要活动是导航抽屉。 listview的片段是Fragment_hotels,另一个包含edittext的片段是FragmentAddHotel。我想在listview(与酒店)中添加一个新酒店。 有人可以解释如何做到这一点? 代码如下:

Fragment_hotels:

public class Fragment_hotels extends Fragment {
    public static boolean flag=false;

    public void Add(){
        Target.add("Hotel");
        Target.add("Hotel1");
        Target.add("Hotel2");
    }


    static ArrayList<String> Target = new ArrayList<String>(); 
    @Override
    public View onCreateView(
            LayoutInflater inflater, 
            ViewGroup container, 
            Bundle savedInstanceState){
            View view = inflater.inflate(R.layout.fragment_hotels, container,false);

        ListView listView = (ListView) view.findViewById(R.id.list);
        if (flag==false){
            this.Add();
        }       

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),R.layout.mytextview,R.id.tv, Target);

        adapter.setNotifyOnChange(true);

        // Assign adapter to ListView
        listView.setAdapter(adapter);

        return view;  
    }
}

和FragmentAddHotel:

public class FragmentAddHotel extends Fragment {

    public View onCreateView(
            LayoutInflater inflater, 
            ViewGroup container, 
            Bundle savedInstanceState){
        View rootView = inflater.inflate(R.layout.fragment_add_hotel, container, false);

        return rootView;
    }
}

我的FragmentAddHotel布局上有一个edittext和一个按钮。 如何从edittext获取值并将其添加到列表视图中? 很抱歉,如果类似的问题已经得到解答,但我是初级程序员。 Tnx提前:))

2 个答案:

答案 0 :(得分:1)

要从另一个视图更新课程中的视图,您可以在此处使用EventBus库link

只需添加以下内容即可注册您的第一堂课:

EventBus.getDefault()寄存器(本); //在包含onCreate方法列表视图的侦听器类中。

同时实施接收方法:

app/controller/passwords_controller.rb

要从片段发送数据,只需使用:

EventBus.getDefault()后( “edittextvalue”);

另外不要忘记致电:

EventBus.getDefault()取消注册(这); //在你的监听器类onDestroy()方法中。

答案 1 :(得分:0)

在YourActivity中:

Fragment_hotels frag_hotels;

void addItem(String item){
  frag_hotels.addItemToList(item);
}

<强> Fragment_hotels:

List<String> hotelList;
ArrayAdapter<String> adapter;
void addItemToList(String item){
   hotelList.add(item);
   adapter.notifyDataSetChanged();
}

在FragmentAddHotel中:

// you should call whenever adding is need in fragment
((YourActivity)getActivity()).addItem("Your Item");

通过YourActivity,您可以传达每个片段。