public class Contact {
// id
int mNumber;
String mMonth,mDate, mDay, mTime , mTitle , mContent;
int mMood,mWeather;
public Contact(){}
public Contact(int number, String month, String date, String day, String time, String title, String content, int weather, int mood) {
mNumber=number; mMonth=month; mDay = day; mDate = date ; mTime = time; mTitle = title; mContent = content; mWeather = weather; mMood =mood;
}
public Contact(String month, String date, String day, String time, String title, String content, int weather, int mood) {
mMonth=month; mDay = day; mDate = date ; mTime = time; mTitle = title; mContent = content; mWeather = weather; mMood =mood;
}
public Contact(String month, String date, String day, String time, String title, String content) {
mMonth=month; mDay = day; mDate = date ; mTime = time; mTitle = title; mContent = content;
}
public int getmNumber() {
return mNumber;
}
public void setmNumber(int mNumber) {
this.mNumber = mNumber;
}
public String getmMonth() {
return mMonth;
}
public void setmMonth(String mMonth) {
this.mMonth = mMonth;
}
public String getmDate() {
return mDate;
}
public void setmDate(String mDate) {
this.mDate = mDate;
}
public String getmDay() {
return mDay;
}
public void setmDay(String mDay) {
this.mDay = mDay;
}
public String getmTime() {
return mTime;
}
public void setmTime(String mTime) {
this.mTime = mTime;
}
public String getmTitle() {
return mTitle;
}
public void setmTitle(String mTitle) {
this.mTitle = mTitle;
}
public String getmContent() {
return mContent;
}
public void setmContent(String mContent) {
this.mContent = mContent;
}
public int getmMood() {
return mMood;
}
public void setmMood(int mMood) {
this.mMood = mMood;
}
public int getmWeather() {
return mWeather;
}
public void setmWeather(int mWeather) {
this.mWeather = mWeather;
}
}
Contact类是用于保存值使用RecyclerView与数据库
public class DBHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Calendar.db";
//Table Name
public static final String D_TABLE_NAME = "Diary";
public static final String D_COL_1 = "m_Number"; //id
public static final String D_COL_2 = "m_Title";
public static final String D_COL_3 = "m_Content";
public static final String D_COL_4 = "m_Month";
public static final String D_COL_5 = "m_Date";
public static final String D_COL_6 = "m_Day";
public static final String D_COL_7 = "m_Time";
public static final String D_COL_8 = "m_Mood"; //image
public static final String D_COL_9 = "m_Weather"; //image
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE "+D_TABLE_NAME+"("+D_COL_1+" INTEGER PRIMARY KEY AUTOINCREMENT, "+D_COL_2+" TEXT, "+D_COL_3+" TEXT, "+D_COL_4+" TEXT, "
+D_COL_5+" TEXT, "+D_COL_6+" TEXT, "+D_COL_7+ " TEXT, "+D_COL_8+" INTEGER, "+D_COL_9+" INTEGER);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists"+TABLE_NAME);
onCreate(db);
}
//Insert new Data
public void addContact(Contact contact){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(D_COL_2,contact.getmTitle());
contentValues.put(D_COL_3,contact.getmContent());
contentValues.put(D_COL_4,contact.getmMonth());
contentValues.put(D_COL_5,contact.getmDate());
contentValues.put(D_COL_6,contact.getmDay());
contentValues.put(D_COL_7,contact.getmTime());
contentValues.put(D_COL_8,contact.getmMood());
contentValues.put(D_COL_9,contact.getmWeather());
db.insert(D_TABLE_NAME,null,contentValues);
db.close();
} //
// mNumber to get Contact
public Contact getContact(int mNumber) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(D_TABLE_NAME, new String[] { D_COL_1,D_COL_2,D_COL_3,D_COL_4,D_COL_5,
D_COL_6,D_COL_7,D_COL_8,D_COL_9 }, D_COL_1 + "=?",
new String[] { String.valueOf(mNumber) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getString(2),cursor.getString(3),cursor.getString(4),cursor.getString(5),cursor.getString(6),
Integer.parseInt(cursor.getString(7)),Integer.parseInt(cursor.getString(8)));
return contact;
}
// All Contact information get
public List<Contact> getAllContacts() {
List<Contact> contactList = new ArrayList<Contact>();
// Select All Query
String selectQuery = "SELECT * FROM " + D_TABLE_NAME;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setmNumber(Integer.parseInt(cursor.getString(0)));
contact.setmTitle(cursor.getString(1));
contact.setmContent(cursor.getString(2));
contact.setmMonth(cursor.getString(3));
contact.setmDate(cursor.getString(4));
contact.setmDay(cursor.getString(5));
contact.setmTime(cursor.getString(6));
contact.setmMood(Integer.parseInt(cursor.getString(7)));
contact.setmWeather(Integer.parseInt(cursor.getString(8)));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
// return contact list
Log.d("agent99", contactList.get(0).getmTitle().toString());
return contactList;
}
public int updateContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(D_COL_2,contact.getmTitle());
values.put(D_COL_3,contact.getmContent());
values.put(D_COL_4,contact.getmMonth());
values.put(D_COL_5,contact.getmDate());
values.put(D_COL_6,contact.getmDay());
values.put(D_COL_7,contact.getmTime());
values.put(D_COL_8,contact.getmMood());
values.put(D_COL_9,contact.getmWeather());
// updating row
return db.update(D_TABLE_NAME, values, D_COL_1 + " = ?",
new String[] { String.valueOf(contact.getmNumber()) });
}
// Contact information delete
public void deleteContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(D_TABLE_NAME, D_COL_1 + " = ?",
new String[] { String.valueOf(contact.getmNumber()) });
db.close();
}
// Contact information number
public int getContactsCount() {
String countQuery = "SELECT * FROM " + D_TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();
// return count
return cursor.getCount();
}
}
回收站Adapter类的DataManager
import android.content.Context;
import android.content.Intent;
import android.support.v4.widget.CursorAdapter;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.codbking.calendar.Contact;
import com.codbking.calendar.DBHelper;
import com.codbking.calendar.exaple.R;
import java.util.List;
public class DataManager extends RecyclerView.Adapter<DataManager.RecyclerViewHolder> {
DBHelper dbHelper;
CursorAdapter mCursorAdapter;
List<Contact> contacts = dbHelper.getAllContacts();
public static class RecyclerViewHolder extends RecyclerView.ViewHolder {
TextView mDate, mDay, mMonth, mTime, mTitle, mContent;
ImageView mMood, mWeather;
private Context context;
RecyclerViewHolder(final View itemView) {
super(itemView);
context = itemView.getContext();
mDate = (TextView) itemView.findViewById(R.id.TV_entries_item_date);
mDay = (TextView) itemView.findViewById(R.id.TV_entries_item_day);
mMonth = (TextView) itemView.findViewById(R.id.TV_entries_item_header);
mTime = (TextView) itemView.findViewById(R.id.TV_entries_item_time);
mTitle = (TextView) itemView.findViewById(R.id.TV_entries_item_title);
mContent = (TextView) itemView.findViewById(R.id.TV_entries_item_summary);
mMood = (ImageView) itemView.findViewById(R.id.IV_entries_item_weather);
mWeather = (ImageView) itemView.findViewById(R.id.IV_entries_item_mood);
itemView.setClickable(true);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(v.getContext(), MainActivity.class);
context.startActivity(myIntent);
}
});
}
}
@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.entries, viewGroup, false);
return new RecyclerViewHolder(v);
}
@Override
public void onBindViewHolder(RecyclerViewHolder viewHolder, int i) {
// get the single element from the main array
for (Contact cn : contacts) {
viewHolder.mDate.setText(cn.getmDate());
viewHolder.mDay.setText(cn.getmDay());
viewHolder.mMonth.setText(cn.getmMonth());
viewHolder.mTime.setText(cn.getmTime());
viewHolder.mTitle.setText(cn.getmTitle());
viewHolder.mContent.setText(cn.getmContent());
viewHolder.mMood.setImageResource(cn.getmMood());
viewHolder.mWeather.setImageResource(cn.getmWeather());
}
}
@Override
public int getItemCount(){
return contacts.size();
}
}
我不知道如何使用RecyclerView与数据库。 错误发生在DataManager类(置信)
也许错误发生在onBindViewHolder()
方法或getItemCount()
方法。 以前我用RecyclerView没有数据库应用程序运行良好......但是当我使用的数据库,应用程序只是死,所以我肯定在此代码
基本上,您将所有联系信息设置为循环中的每个位置。 Pankaj Sharma的答案是正确的代码。 – Pulak
谢谢你的回答,但应用程序是死..我认为答案代码是正确的太 –
你未将你dbHelper从您的呼吁 –