【发布时间】:2015-01-13 15:07:03
【问题描述】:
我对下一个问题有一些问题...方法 fillList() 正在使用我的 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);
}
填写清单 cursor 的 where 子句中的第二个参数是来自 android 的 Calendar 类的 dayOfTheWeek
public void LoadGrid(Object obj) {
//
DayOfTheWeek=cal.get(Calendar.DAY_OF_WEEK);
sqlC = new SQLController(getActivity());
sqlC.open();
这是我的光标,它从我的数据库中获取数据,带有选定的参数:我从 mainActivity 和 DayofTheWeek 获取的 obj.getID() 是日历中的星期几,如您所见
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));
}
点击方法
@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;
}
【问题讨论】:
-
这里的对象是什么?
-
我正在使用数据访问对象来管理我的类,这个对象来自用 setter 和 getter 从数据库中描述我的表的类。我从主要活动中获取的这个对象代表哪个数据有用户在其他片段中单击,所以我可以从 table1 获取 ID 并显示来自 table2 的已连接数据
标签: android sqlite cursor adapter