我是adroid的新手,所以我有一个小问题,但我不知道如何解决它。在android studio中,我创建了带有片段的默认滑动选项卡(看起来像http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/)。我有2个片段(“设置”和“Histrory”)。在Histrory片段中,我编写了所有逻辑(我创建了列表(使用自定义适配器返回带有自定义设计的行视图)并用sql中的数据填充它)。在我的安装程序片段中,我有alertDialog,它根据这些数据(来自sql)向sql和History片段生成列表添加一些数据。
我的问题是:我不知道如何从安装程序片段更新Histrory Fragment。我的适配器需要一个View,我无法(我不知道如何)从Setup Fragment获取。看起来我应该重建/重启历史片段,它将使用我的函数运行onCreateView,我将获得最新(更新)列表?或者我需要从Setup Fragment中的History Fragment获取视图,并从Setup片段传递视图到UpdateHistoryList运行更新功能?我花了一整天时间来解决这个问题,找不到任何好的和简单的解决方案......
HistoryFragment.java
public class HistoryFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.historyfragment, container, false);
///////////////////////////////////////////////////
UpdateHistoryList(rootView); ////// This work fine.
///////////////////////////////////////////////////
return rootView;
}
// This function make request to db and fill array with some values
public void UpdateHistoryList(View v) {
<Some code>
generateHistoryList(v, myarray);
}
public void generateHistoryList(View v,String[] myarray) {
history_adapter adapter = new history_adapter(v.getContext(), values);
ListView listView = (ListView) v.findViewById(R.id.history_list);
listView.setAdapter(adapter);
}
}
history_adapter.java
// generate row look
public class history_adapter extends ArrayAdapter<String> {
private final Context context;
private final String[] myarray;
public history_adapter(Context context, String[] myarray) {
super(context, R.layout.history_row, values);
this.context = context;
this.myarray = myarray;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.history_row, parent, false);
TextView catName = (TextView) rowView.findViewById(R.id.catName);
catName.setText(myarray[position]);
return rowView;
}
感谢。