美好的一天,我想用適配器獲取我的數據庫數據並將其顯示在我的RecylcerViewer中。但我不知道如何實施它。希望你會指導我如何完成這些任務如何在Android中使用適配器獲取SQLite數據?
我想將這些數據替換爲我的數據庫數據,但我不知道該怎麼做。
//I want to replace this dummy data to my database data
MyAdapter adapter = new MyAdapter(new String[]{"Dummy Data1", "Dummy Data2"});
AccntFragment.java
public class AccountsFragment extends Fragment {
public AccountsFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_accounts, container, false);
RecyclerView rv = (RecyclerView) rootView.findViewById(R.id.rv_recycler_view);
rv.setHasFixedSize(true);
//I want to replace this dummy data to my database data
MyAdapter adapter = new MyAdapter(new String[]{"Dummy Data1", "Dummy Data2"});
rv.setAdapter(adapter);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
rv.setLayoutManager(llm);
return rootView;
}
}
MyAdapter.java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private String[] mDataset;
// Provide a reference to the views for each data item
// Complex data items may need more than one view per item, and
// you provide access to all the views for a data item in a view holder
public static class MyViewHolder extends RecyclerView.ViewHolder {
public CardView mCardView;
public TextView account_type;
public TextView accnt_description;
public TextView balance_label;
public TextView account_balance;
public MyViewHolder(View v) {
super(v);
mCardView = (CardView) v.findViewById(R.id.card_view);
account_type = (TextView) v.findViewById(R.id.lblShareCapital);
balance_label = (TextView) v.findViewById(R.id.lblAvailableBalance);
accnt_description = (TextView) v.findViewById(R.id.sl_desc);
account_balance = (TextView) v.findViewById(R.id.actual_balance);
}
}
// Provide a suitable constructor (depends on the kind of dataset)
public MyAdapter(String[] myDataset) {
mDataset = myDataset;
}
// Create new views (invoked by the layout manager)
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_item, parent, false);
// set the view's size, margins, paddings and layout parameters
MyViewHolder vh = new MyViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.account_type.setText(mDataset[position]);
holder.mCardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String currentValue = mDataset[position];
Log.d("CardView", "CardView Clicked: " + currentValue);
}
});
}
@Override
public int getItemCount() {
return mDataset.length;
}
}
SQliteHandler.java
public void addUser(String br_code, String mem_id, String username, String email, String created_at) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(BR_CODE, br_code); // branch code
values.put(MEM_ID, mem_id); // mem id
values.put(MEM_USERNAME, username); // username
values.put(MEM_EMAIL, email); // Email
values.put(MEM_CREATED_AT, created_at); // Created At
// Inserting Row
long id = db.insertOrThrow(TABLE_MEMBERS, null, values);
db.close(); // Closing database connection
Log.d(TAG, "Member's info was inserted successfully: " + id);
Log.d(TAG, "BR CODE: " + br_code);
Log.d(TAG, "Member ID: " + mem_id);
Log.d(TAG, "Username: " + username);
Log.d(TAG, "Email: " + email);
Log.d(TAG, "Created at: " + created_at);
Log.d(TAG, "---------------------------------");
}
/**
* Getting user data from database
* */
public HashMap<String, String> getUserDetails() {
HashMap<String, String> user = new HashMap<String, String>();
String selectQuery = "SELECT * FROM " + TABLE_MEMBERS;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Move to first row
cursor.moveToFirst();
if (cursor.getCount() > 0) {
user.put("br_code", cursor.getString(0));
user.put("mem_id", cursor.getString(1));
user.put("username", cursor.getString(2));
user.put("email", cursor.getString(3));
user.put("created_at", cursor.getString(4));
Log.d(TAG, "Members's data: " + user.toString());
}
else{
Log.d(TAG, "member's data is empty");
}
cursor.close();
db.close();
// return user
Log.d(TAG, "Member's info was successfully fetch: " + user.toString());
return user;
}
/**
* Storing user SL details in database
* */
public void addUserSLDTL(String sl_desc, String tr_date, String actual_balance, String available_balance){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(SL_DESC, sl_desc); // sl desc
values.put(TR_DATE, tr_date); // trans date
values.put(ACTUAL_BALANCE, actual_balance); // actual balance
values.put(AVAILABLE_BALANCE, available_balance); // availabe balance
// Inserting Row
long id = db.insertOrThrow(TABLE_MEMBERS_SLDTL, null, values);
db.close(); // Closing database connection
Log.d(TAG, "Members's SL Details was successfully: " + id);
Log.d(TAG, "SL Desc: " + sl_desc);
Log.d(TAG, "Transaction Date: " + tr_date);
Log.d(TAG, "Actual Balance: " + actual_balance);
Log.d(TAG, "Available Balance: " + available_balance);
}
/**
* Getting user SL details data from database
* */
public HashMap<String, String> getUserSLDTL() {
HashMap<String, String> sl_summ = new HashMap<String, String>();
String selectQuery = "SELECT * FROM " + TABLE_MEMBERS_SLDTL;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Move to first row
cursor.moveToFirst();
if (cursor.getCount() > 0) {
sl_summ.put("sl_desc", cursor.getString(0));
sl_summ.put("tr_date", cursor.getString(1));
sl_summ.put("actual_balance", cursor.getString(2));
sl_summ.put("available_balance", cursor.getString(3));
Log.d(TAG, "Member's SL Details: " + sl_summ.toString());
}
else{
Log.d(TAG, "member's SLDTL data is empty");
}
cursor.close();
db.close();
// return user
Log.d(TAG, "Member's SL Details was successfully fetch: " + sl_summ.toString());
return sl_summ;
}
你可以閱讀關於數據庫的一些教程嗎? – Piyush
我可以獲取數據先生,但不使用適配器。我需要一個適配器,以便可以使用RecylerViewer在SQLite中顯示所有數據。 – Novice