从sqlite到自定义适配器android的多行
应用程序:我有一个应用程序,可以创建多台机器,其中包括: id、名称和位置 每台机器我都要让用户输入收入 身份证、票据、日期、货币、机器 问题是:我需要将匹配机器id中的所有注释填充到ListView中 我尝试过的是:创建DBHelper方法来获取我需要的注释和日期信息 db.rawQuerySELECT note,机器id=+machinesId+的收入日期,null; 这目前可以在SQLite的DB浏览器上使用,但我不知道如何将其添加到ListView适配器并将其设置为相应的TextView 我的问题:实现DBHelper方法和自定义适配器之间的联合以仅获取TextView中所需的信息的最佳方法是什么?匹配机器的日期和注释\u id 如果您需要其他课程或有任何反馈,请不要犹豫,请允许我 数据库助手 列表适配器从sqlite到自定义适配器android的多行,android,sqlite,listview,android-adapter,Android,Sqlite,Listview,Android Adapter,应用程序:我有一个应用程序,可以创建多台机器,其中包括: id、名称和位置 每台机器我都要让用户输入收入 身份证、票据、日期、货币、机器 问题是:我需要将匹配机器id中的所有注释填充到ListView中 我尝试过的是:创建DBHelper方法来获取我需要的注释和日期信息 db.rawQuerySELECT note,机器id=+machinesId+的收入日期,null; 这目前可以在SQLite的DB浏览器上使用,但我不知道如何将其添加到ListView适配器并将其设置为相应的TextView
基本上,当您执行查询时,数据库将返回一个游标对象。此游标将包含从数据库返回的所有行。您可以使用游标适配器,也可以简单地将游标传递给自定义适配器的构造函数 下面是一个非常简单的示例,说明如何使用RecyclerView适配器实现这一点
public class RecyclerViewCursorAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Cursor mCursor;
private int mRowIdColumn;
// Pass the cursor to your adapter.
public void RecyclerViewCursorAdaper(Cursor cursor) {
mCursor = cursor;
mRowIdColumn = mCursor.getColumnIndex("_id");
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Inflate your view here.
return null;
}
@Override
public long getItemId(int position) {
if (mCursor != null && mCursor.moveToPosition(position)) {
return mCursor.getLong(mRowIdColumn);
}
return 0;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
mCursor.moveToPosition(position);
// Todo: Bind your custom view holder.
}
@Override
public int getItemCount() {
if (mCursor != null) {
return mCursor.getCount();
}
return 0;
}
public Cursor getCursor() {
return mCursor;
}
}
嗨,谢谢你的反馈。如何在相应的活动中设置适配器?使用mRecyclerView.setAdapternew RecyclerViewCursorAdapemCursor时;Im getting无法应用于RecycleView需要LayoutManager才能工作。在LinearLayoutManager、StaggedGridLayoutManager或GridLayoutManager之间选择所需的布局管理器类型,然后将布局管理器作为.setAdapter中的第二个参数传递
public class ListAdapter extends BaseAdapter {
private Context mContext;
private DBHelpter mDBHelpter;
private ArrayList<IncomeClass> mList;
public ListAdapter(Context mContext, DBHelpter mDBHelper, ArrayList<IncomeClass> mList){
this.mContext = mContext;
this.mDBHelpter = mDBHelper;
this.mList = mList;
}
@Override
public int getCount() {
return mList != null ? mList.size(): 0;
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
mDBHelpter = new DBHelpter(mContext);
SQLiteDatabase db = mDBHelpter.getReadableDatabase();
ViewHolder viewHolder;
if (convertView == null){
convertView = LayoutInflater.from(mContext).inflate(R.layout.notes_list, parent, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// Cursor info = mDBHelpter.getInfoFromMachine(currentNote.getId());
// viewHolder.mNote.setText(mDBHelpter.getInfoFromMachine(currentNote.getId()).toString());
// viewHolder.mNoteDate.setText(mDBHelpter.getInfoFromMachine(currentNote.getId()).toString());
return convertView;
}
private class ViewHolder {
private TextView mNote, mNoteDate;
public ViewHolder(View view){
mNote = (TextView) view.findViewById(R.id.tvNote);
mNoteDate = (TextView) view.findViewById(R.id.tvNoteDate);
}
}
}
public class RecyclerViewCursorAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Cursor mCursor;
private int mRowIdColumn;
// Pass the cursor to your adapter.
public void RecyclerViewCursorAdaper(Cursor cursor) {
mCursor = cursor;
mRowIdColumn = mCursor.getColumnIndex("_id");
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Inflate your view here.
return null;
}
@Override
public long getItemId(int position) {
if (mCursor != null && mCursor.moveToPosition(position)) {
return mCursor.getLong(mRowIdColumn);
}
return 0;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
mCursor.moveToPosition(position);
// Todo: Bind your custom view holder.
}
@Override
public int getItemCount() {
if (mCursor != null) {
return mCursor.getCount();
}
return 0;
}
public Cursor getCursor() {
return mCursor;
}
}