我有下一个问题的一些问题...方法fillList()填充listview我的CustomAdapter ...方法从我的MainActivity调用,它从它传递对象 我必须在onClick方法之后刷新我的光标以使用具有不同参数的数据填充列表 公共类FragmentChosenDiet扩展ListFragment实现了View.OnClickListener {
Button next, previous;
Calendar cal = Calendar.getInstance();
int DayOfTheWeek;
String formattedDate;
TextView date;
SimpleDateFormat df;
SQLController sqlC;
private ArrayList items;
private CustomAdapter cAdapter;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_chosen_diet, container, false);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//get current date
df = new SimpleDateFormat("dd.MM.yyyy EEEE");
formattedDate = df.format(cal.getTime());
date = (TextView) getActivity().findViewById(R.id.Datum);
next = (Button) getActivity().findViewById(R.id.bNext);
previous = (Button) getActivity().findViewById(R.id.bPrevious);
DayOfTheWeek=cal.get(Calendar.DAY_OF_WEEK);
date.setText(formattedDate + " " + DayOfTheWeek);
next.setOnClickListener(this);
previous.setOnClickListener(this);
}
填写清单 游标where子句中的第二个参数是来自android的日历类的dayOfTheWeek
public void LoadGrid(Object obj) {
//
DayOfTheWeek=cal.get(Calendar.DAY_OF_WEEK);
sqlC = new SQLController(getActivity());
sqlC.open();
这是我的光标,它从我的数据库中获取数据,带有选定的参数:obj.getID(),我从mainActivity和DayofTheWeek获取,它是日历中的星期几,你可以看到
DayOfTheWeek=cal.get(Calendar.DAY_OF_WEEK);
Cursor c = sqlC.readJelovnikTable(obj.getID(),DayOfTheWeek);
c.moveToFirst();
if (!c.isAfterLast()) {
do {
int tableID = c.getInt(c.getColumnIndex(SQLController.colJelPrehID_fk));
String col1Table1 = c.getString(c.getColumnIndex(SQLController.colJelvrID_fk));
String col2Table1 = c.getString(c.getColumnIndex(SQLController.colJelDorID_fk));
items.add(new Items(tableID,col1Table1,col2Table1))
} while (c.moveToNext());
}
c.close();
setListAdapter(cAdapter =new CustomAdapter(getActivity(), android.R.layout.simple_list_item_1,
items));
}
on Click方法
@Override
public void onClick(View v) {
switch(v.getId()){
我正在改变我的onClick方法的日期,我的问题是我不知道如何刷新光标与更改日期,即DayOfTheWeek ..所以它可以填充 //列出包含新数据的视图,我不能再从这里调用我的LoadGrid()方法,因为我无法将对象传递给它...就像我在从主要活动中获取对象之前说的那样
case R.id.bNext:
cal.add(Calendar.DATE, 1);
formattedDate = df.format(cal.getTime());
DayOfTheWeek=cal.get(Calendar.DAY_OF_WEEK);
date.setText(formattedDate + " " + DayOfTheWeek);
cAdapter.notifyDataSetChanged();
break;
同样的事情是减少日期
//上一个日期
case R.id.bPrevious:
cal.add(Calendar.DATE, -1);
formattedDate = df.format(cal.getTime());
date.setText(formattedDate + " " + cal.get(Calendar.DAY_OF_WEEK));
break;
}
}
和我的光标来自SQLController
public Cursor readTable(int objID,int dayID){
database = dbHelper.getReadableDatabase();
String[] allColumns=new String[]{colID,col1,col2,col3,col4};
Cursor c=database.query(Table1,allColumns,col1ID+"=? AND "+col2ID_fk+"=?",
new String[]{String.valueOf(objID),String.valueOf(dayID)},null,null,null);
if (c != null) {
c.moveToFirst();
}
return c;
}
答案 0 :(得分:0)
您可以执行以下操作。您可以创建一个名为RunTimeData的类,您可以在其中保存对象。使用方法如下。
public class RunTimeData{
public static Object name=null;
}
虽然分配数据的确如下使用。
RuntimeData.name=name;
使用数据时使用如下。
RunTimeData.name=name;
在您的情况下,将LoadGrid称为
LoadGrid(RunTimeData.name)
当您确定某个地方不再使用该值时,释放该对象。
RunTimeData.name=null;
希望这有帮助。