Android: как заполнить два разных списка с базой данных?
У меня есть действие, которое хранит назначения с их отметкой времени в мс. Затем я хочу действие, которое перечисляет все временные метки и названия действия, если это действие на самом деле сегодня или завтра. Я начал с того, что просто попытался показать метки времени для всех действий, которые есть сегодня, в одном списке. Это дает мне ошибку и говорит, что "_id" не существует в виде столбца. Вот мой код:
public class UpcomingActivity extends Activity implements LoaderManager.LoaderCallbacks<Cursor>{
@SuppressLint("NewApi")
private DatabaseHelper databaseHelper;
private SimpleCursorAdapter mAdapter;
private ListView listView;
private String[] today= new String[5]; //max 5 values
private String[] tom= new String[5]; //max 5 values
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_upcoming);
databaseHelper = new DatabaseHelper(getApplicationContext());
SQLiteCursorLoaderActivities cLoader = new SQLiteCursorLoaderActivities(getApplicationContext(),
databaseHelper,
null,
null);
Cursor c = cLoader.buildCursor();
c.moveToFirst();
int todayTracker = 0;
int tomTracker = 0;
int alltimes = 1;
long day = 86400000; // length of a day in ms
String newText;
TextView testField = (TextView)findViewById(R.id.test);
listView = (ListView) findViewById(android.R.id.list);
listView.setEmptyView(findViewById(android.R.id.empty));
//loop through all records and check if the date is today!
for(int i=0; i<alltimes;i++){
long time = c.getInt(i);
if(DateUtils.isToday(time)){
newText = String.valueOf(time);
today[todayTracker] = newText;
todayTracker++;
}
else{
time = time + day; //maybe it is tomorrow?
if(DateUtils.isToday(time)){
newText = String.valueOf(time);
tom[tomTracker] = newText;
tomTracker++;
}
}
}
int[] toViews = {android.R.id.text2};
mAdapter = new SimpleCursorAdapter( getApplicationContext(),
R.layout.my_list_element,
c,
today,
toViews,
0);
listView.setAdapter(mAdapter);
getLoaderManager().initLoader(0, null, this);
}
Вот мой бревенчатый кот:
05-06 09:16:43.243: E/AndroidRuntime(2025): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
Почему есть ошибка, и на будущее, как я мог бы заполнить два разных списка? Спасибо!
1 ответ
Решение
Для получения и заполнения данных в ListViews
каждый запрос из баз данных должен содержать столбец с именем _id . Вы должны включить _id в вашем курсоре