我制作了一个列表视图,显示了数据库中的内容。但是,如果我通过不同的活动在数据库中添加数据,那么仅当我关闭然后启动我的应用程序时,修改后的列表视图才可见。
那么如何刷新我的列表视图,以便输入数据后,它就会在列表中显示。
我听说过notifyDataSetChange()但不知道把它放在我的代码中的哪个位置。
请帮忙。 TimePickerPop类是将数据添加到数据库的类。
public class MainActivityFragment2 extends Fragment {
private List<TimeList> TDList = new ArrayList<TimeList>();
public MainActivityFragment2() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
populateTimeList();
}
private void populateTimeList() {
Context ctx = this.getActivity();
DBoperations db = new DBoperations(ctx);
Cursor cr = db.getInformation(db);
cr.moveToFirst();
String TimeH, TimeM, EtimeH, EtimeM;
do {
TimeH = Integer.toString(cr.getInt(1));
TimeM = Integer.toString(cr.getInt(2));
EtimeH = Integer.toString(cr.getInt(3));
EtimeM = Integer.toString(cr.getInt(4));
TDList.add((new TimeList(TimeH + " : " + TimeM, EtimeH + " : " + EtimeM)));
}while (cr.moveToNext());
}
private class MyAdapter extends ArrayAdapter<TimeList> {
public MyAdapter(Context context, List<TimeList> values) {
super(context, R.layout.time_list_item,values);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
LayoutInflater inflater = LayoutInflater.from(getContext());
if( v == null){
v = inflater.inflate(R.layout.time_list_item, parent, false);
}
TimeList currLoc = TDList.get(position);
TextView theTextView = (TextView) v.findViewById(R.id.time_list_item_textview1);
theTextView.setText(currLoc.getTime());
theTextView = (TextView) v.findViewById(R.id.time_list_item_textview2);
theTextView.setText(currLoc.getDuration());
return v;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.time_list_view, container, false);
ListView list = (ListView) rootView.findViewById(R.id.time_list_view);
ArrayAdapter<TimeList> adapter = new MyAdapter(getActivity(),TDList);
list.setAdapter(adapter);
//adapter.notifyDataSetChanged(); // not working
setRetainInstance(true);
ImageButton ib = (ImageButton) rootView.findViewById(R.id.imageButton1);
ib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivityFragment2.this.getActivity(), TimePickerPopup.class));
}
});
return rootView;
}
}
这是TimePickerPopup类。
public class TimePickerPopup extends Activity {
Context ctx =this;
private TimePicker time_picker1;
private TimePicker time_picker2;
private ImageButton select_time1;
private ImageButton select_time2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.time_picker);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
getWindow().setLayout((int) (width * .8), (int) (height * .7+50));
time_picker1 = (TimePicker) findViewById(R.id.timePicker1);
time_picker2 = (TimePicker) findViewById(R.id.timePicker2);
select_time1 = (ImageButton) findViewById(R.id.selectButton1);
select_time2 = (ImageButton) findViewById(R.id.selectButton2);
select_time1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getBaseContext(),"Start time " + time_picker1.getCurrentHour() + " : " + time_picker1.getCurrentMinute(), Toast.LENGTH_SHORT).show();
ScrollView sv1 = (ScrollView) findViewById(R.id.sv);
sv1.fullScroll(View.FOCUS_DOWN);
}
});
select_time2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getBaseContext(),"End time " + time_picker2.getCurrentHour() + " : " + time_picker2.getCurrentMinute(), Toast.LENGTH_SHORT).show();
DBoperations db = new DBoperations(ctx);
db.putInfo(db, time_picker1.getCurrentHour(), time_picker1.getCurrentMinute(), time_picker2.getCurrentHour(), time_picker2.getCurrentMinute(), 0, 0);
finish();
}
});
}
}
答案 0 :(得分:0)
创建:
public void notifyChange() {
notifyDataSetChanged();
}
并从您的活动电话:
adapter.notifyChange();