我正在开发一个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_time
和d_time
的值发送到视图并在视图的文本视图中进行更新。在MyAdapter类中有一个显示tetxview的viewHolder
。我如何从MyFragment类
答案 0 :(得分:0)
使用一些活动总线库,https://github.com/greenrobot/EventBus或https://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)在适配器中编写一个方法来更新你的视图。从你的广播接收器中激活它并调用方法。在那个方法中,请注意更改。