Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从sqlite到自定义适配器android的多行_Android_Sqlite_Listview_Android Adapter - Fatal编程技术网

从sqlite到自定义适配器android的多行

从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

应用程序:我有一个应用程序,可以创建多台机器,其中包括:

id、名称和位置 每台机器我都要让用户输入收入

身份证、票据、日期、货币、机器 问题是:我需要将匹配机器id中的所有注释填充到ListView中

我尝试过的是:创建DBHelper方法来获取我需要的注释和日期信息

db.rawQuerySELECT note,机器id=+machinesId+的收入日期,null; 这目前可以在SQLite的DB浏览器上使用,但我不知道如何将其添加到ListView适配器并将其设置为相应的TextView

我的问题:实现DBHelper方法和自定义适配器之间的联合以仅获取TextView中所需的信息的最佳方法是什么?匹配机器的日期和注释\u id

如果您需要其他课程或有任何反馈,请不要犹豫,请允许我

数据库助手

列表适配器


基本上,当您执行查询时,数据库将返回一个游标对象。此游标将包含从数据库返回的所有行。您可以使用游标适配器,也可以简单地将游标传递给自定义适配器的构造函数

下面是一个非常简单的示例,说明如何使用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;
    }
}