从片段活动更新Adapter类视图

时间:2016-06-23 12:41:14

标签: android

我正在开发一个Android应用程序。在那里,我有一个片段活动,在MyAdapter方法中为Adapter Class(BaseAdapter extends onCreateView)创建视图。以下是onCreateView -

中的代码段
    mAdapter = new MyAdapter(getActivity(), null, 0);
    mListView = (AbsListView) view.findViewById(android.R.id.list);
    mListView.setEmptyView(emptyView);
    mListView.setAdapter(mAdapter);

MyFragment类的片段活动接收来自其他类的广播数据,例如 -

if(intent.getAction().equals(BroadcastHelper.DEPARTURE_TIME)){
                Bundle args = intent.getExtras();
                if (args != null) {
                    int departure_time = args.getInt("Departure");
                    updateDepartureTime(departure_time);
                }
            }
            else if(intent.getAction().equals(BroadcastHelper.ARRIVAL_TIME)){
                Bundle args = intent.getExtras();
                if (args != null) {
                    int arrival_time = args.getInt("Arrival");
                    updateArrivalTime(arrival_time);
                   }
            }



        public void updateDepartureTime(int time){
            int d_time = time;
            }

        public void updateArrivalTime(int time){
            int a_time = time;
            }

因此需要将a_timed_time的值发送到视图并在视图的文本视图中进行更新。在MyAdapter类中有一个显示tetxview的viewHolder 。我如何从MyFragment类

中完成

2 个答案:

答案 0 :(得分:0)

使用一些活动总线库,https://github.com/greenrobot/EventBushttps://github.com/square/otto。 如果来自广播的数据来自同一个应用程序,请将广播更改为事件总线

如果您想使用界面:

public interface OnChange{
    void onDepartureChanged(int value);
    void onArrivalChanged(int value);
}

在你的活动中实现它:

@Override
public void onDepartureChanged(int value) {
    myAdapter.notifyDataSetChanged()
}

@Override
public void onArriChanged(int value) {
    myAdapter.notifyDataSetChanged()
}

并将其传递给您的片段,例如:

myFragment.registerOnValuesChange(this)

An,最后,在广播中收到:

public void updateDepartureTime(int time){
   int d_time = time;
   onValueListener.onDepratureChanged(d_time) 
}

public void updateArrivalTime(int time){
    int a_time = time;
    onValueListener.onArrivalChange(a_time) 
}

答案 1 :(得分:0)

1)使用界面,在适配器中扩展它。并设置值并执行notifydatasetchanged()。 2)在适配器中编写一个方法来更新你的视图。从你的广播接收器中激活它并调用方法。在那个方法中,请注意更改。