Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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
Java 如何使用SQLite在RecyclerView中动态添加按钮_Java_Sqlite_Android Studio - Fatal编程技术网

Java 如何使用SQLite在RecyclerView中动态添加按钮

Java 如何使用SQLite在RecyclerView中动态添加按钮,java,sqlite,android-studio,Java,Sqlite,Android Studio,我目前正在开发一个库存应用程序,它使用RecyclerView在网格中显示项目。我的应用程序可以在RecyclerView中添加新项目,并保留按钮 但是,我目前正在使用带有ArrayList的适配器来保持这些按钮在RecyclerView中正确显示。我想实现一个SQlite数据库来保存用户输入的值,并在添加新的回收项目时显示这些值 在研究这个问题时,似乎没有使用arraylist。因此,我的按钮无法显示。有没有一种方法可以实现SQlite数据库,同时保留我的ArrayList 这是我的主要活动:

我目前正在开发一个库存应用程序,它使用RecyclerView在网格中显示项目。我的应用程序可以在RecyclerView中添加新项目,并保留按钮

但是,我目前正在使用带有ArrayList的适配器来保持这些按钮在RecyclerView中正确显示。我想实现一个SQlite数据库来保存用户输入的值,并在添加新的回收项目时显示这些值

在研究这个问题时,似乎没有使用arraylist。因此,我的按钮无法显示。有没有一种方法可以实现SQlite数据库,同时保留我的ArrayList

这是我的主要活动:

public class DisplayInventory extends AppCompatActivity {

private ArrayList<InventoryItem> mInventoryItemList;

private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private Object Button;

public ImageButton mImageButton;
private Button mButtonAdd;
private Button mButtonDelete;
private EditText mEditTextInsert;
private EditText mEditTextRemove;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_inventory);

    createExampleList();
    buildRecyclerView();

    mRecyclerView = findViewById(R.id.gridView);
    mButtonAdd = findViewById(R.id.button_add);
    mButtonDelete = findViewById(R.id.button_delete);
    mEditTextRemove = findViewById(R.id.edittext_remove);
    mImageButton = findViewById(R.id.Image);


    mButtonAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            int position = 0;
            insertItem(position);
        }
    });

    mButtonDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int position = Integer.parseInt(mEditTextRemove.getText().toString());
            removeItem(position);

        }
    });

}

public void insertItem(int position) {
    mInventoryItemList.add(position, new InventoryItem(R.drawable.ic_delete, "Tap to Edit", "Items: ", (android.widget.Button) Button, (android.widget.Button) Button));
    mAdapter.notifyItemInserted(position);
}

public void removeItem(int position) {
    mInventoryItemList.remove(position);
    mAdapter.notifyItemRemoved(position);
}

public void createExampleList() {
    mInventoryItemList = new ArrayList<>();
    mInventoryItemList.add(new InventoryItem(R.drawable.ic_delete, "Tap to Edit ", "Items: ", (android.widget.Button) Button, (android.widget.Button) Button));
    mInventoryItemList.add(new InventoryItem(R.drawable.ic_delete, "Tap to Edit ", "Items: ", (android.widget.Button) Button, (android.widget.Button) Button));
    mInventoryItemList.add(new InventoryItem(R.drawable.ic_delete, "Tap to Edit ", "Items: ", (android.widget.Button) Button, (android.widget.Button) Button));

}

public void buildRecyclerView() {
    mRecyclerView = findViewById(R.id.gridView);
    mLayoutManager = new LinearLayoutManager(this);
    mAdapter = new Adapter(mInventoryItemList);
    mRecyclerView.setHasFixedSize(true);

    mRecyclerView.setLayoutManager(mLayoutManager);
    mRecyclerView.setAdapter(mAdapter);
}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
        case R.id.item1:
            Toast.makeText(this, "Notifications Selected", Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(this, UserPermission.class);
            startActivity(intent);
            return true;

        case R.id.item2:
            Toast.makeText(this, "Help Selected", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.subItem1:
            Toast.makeText(this, "Sorry, No Information at this time. Work in Progress", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.subItem2:
            Toast.makeText(this, "The Amazing Zane Created this app!", Toast.LENGTH_SHORT).show();
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

public void AddPressed(View view) {
    //Function will be added later
    Toast.makeText(this, "Add Button Pressed", Toast.LENGTH_SHORT).show();
}

public void DeletePressed(View view) {
    //Function will be added later
    Toast.makeText(this, "Delete Button Pressed", Toast.LENGTH_SHORT).show();
}
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {

private ArrayList<InventoryItem> mInventoryItems;

public static class ViewHolder extends RecyclerView.ViewHolder {
    public ImageButton mImageButton;
    public TextView mItemName;
    public TextView mItemOwner;
    public TextView mNumberItem;
    public Button mPlusButton;
    public Button mMinusButton;
    public int numItems = 0;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        mImageButton = itemView.findViewById(R.id.Image);
        mItemName = itemView.findViewById(R.id.itemName);
        mNumberItem = itemView.findViewById(R.id.numberOfItems);
        mItemOwner = itemView.findViewById(R.id.itemOwner);

        itemView.findViewById(R.id.plusButton).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int totalItems = ++numItems;
                mNumberItem.setText("Items: " +  totalItems);
            }
        });

        itemView.findViewById(R.id.minusButton).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (numItems > 0) {
                    int totalItems = --numItems;
                    mNumberItem.setText("Items: " + totalItems);
                }

            }
        });
    }
}

public Adapter(ArrayList<InventoryItem> inventoryItem) {
    mInventoryItems = inventoryItem;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View layout = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
    ViewHolder VH = new ViewHolder(layout);
    return VH;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

    InventoryItem currentItem = mInventoryItems.get(position);

    holder.mImageButton.setImageResource(currentItem.getImageResource());
    holder.mItemName.setText(currentItem.getItemName());
    holder.mNumberItem.setText(currentItem.getNumberItem());

}

@Override
public int getItemCount() {
    return mInventoryItems.size();
}
public InventoryItem(int imageResource, String ItemName, String NumberItem, Button plusButton, Button minusButton) {
    mImageButton = imageResource;
    mItemName = ItemName;
    mNumberItem = NumberItem;
    mPlusButton = plusButton;
    mMinusButton = minusButton;
}

public int getImageResource() {
    return mImageButton;
}

public String getItemName() {
    return mItemName;
}

public String getNumberItem() {
    return mNumberItem;
}

public Button getPlusButton() {
    return mPlusButton;
}

public Button getMinusButton() {
    return mMinusButton;
}
public class InventoryDBHelper extends SQLiteOpenHelper {

private Context context;
private static final String DATABASE_NAME = "InventoryList.db";
private static final int DATABASE_VERSION = 1;

private static final String TABLE_NAME = "my_inventory";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_TITLE = "item_name";
private static final String COLUMN_OWNER = "item_owner";
private static final String COLUMN_ITEMNUMBER = "number_items";

public InventoryDBHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    this.context = context;
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    String query = "CREATE TABLE " + TABLE_NAME +
                    " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                    COLUMN_TITLE + " TEXT, " +
                    COLUMN_OWNER + " TEXT, " +
                    COLUMN_ITEMNUMBER + " INTEGER);";
    sqLiteDatabase.execSQL(query);

}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(sqLiteDatabase);
}

void addItem(String title, String owner, int numItem) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();

    cv.put(COLUMN_TITLE, title);
    cv.put(COLUMN_OWNER, owner);
    cv.put(COLUMN_ITEMNUMBER, numItem);
    long result = db.insert(TABLE_NAME, null, cv);

    if(result == -1) {
        Toast.makeText(context, "FAILED", Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(context, "Added Successful", Toast.LENGTH_SHORT).show();
    }
}

Cursor readAllData() {
    String query = "SELECT * FROM " + TABLE_NAME;
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = null;
    if(db != null) {
        cursor = db.rawQuery(query, null);
    }
    return cursor;
}
}

这是我的数据库:

public class DisplayInventory extends AppCompatActivity {

private ArrayList<InventoryItem> mInventoryItemList;

private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private Object Button;

public ImageButton mImageButton;
private Button mButtonAdd;
private Button mButtonDelete;
private EditText mEditTextInsert;
private EditText mEditTextRemove;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_inventory);

    createExampleList();
    buildRecyclerView();

    mRecyclerView = findViewById(R.id.gridView);
    mButtonAdd = findViewById(R.id.button_add);
    mButtonDelete = findViewById(R.id.button_delete);
    mEditTextRemove = findViewById(R.id.edittext_remove);
    mImageButton = findViewById(R.id.Image);


    mButtonAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            int position = 0;
            insertItem(position);
        }
    });

    mButtonDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int position = Integer.parseInt(mEditTextRemove.getText().toString());
            removeItem(position);

        }
    });

}

public void insertItem(int position) {
    mInventoryItemList.add(position, new InventoryItem(R.drawable.ic_delete, "Tap to Edit", "Items: ", (android.widget.Button) Button, (android.widget.Button) Button));
    mAdapter.notifyItemInserted(position);
}

public void removeItem(int position) {
    mInventoryItemList.remove(position);
    mAdapter.notifyItemRemoved(position);
}

public void createExampleList() {
    mInventoryItemList = new ArrayList<>();
    mInventoryItemList.add(new InventoryItem(R.drawable.ic_delete, "Tap to Edit ", "Items: ", (android.widget.Button) Button, (android.widget.Button) Button));
    mInventoryItemList.add(new InventoryItem(R.drawable.ic_delete, "Tap to Edit ", "Items: ", (android.widget.Button) Button, (android.widget.Button) Button));
    mInventoryItemList.add(new InventoryItem(R.drawable.ic_delete, "Tap to Edit ", "Items: ", (android.widget.Button) Button, (android.widget.Button) Button));

}

public void buildRecyclerView() {
    mRecyclerView = findViewById(R.id.gridView);
    mLayoutManager = new LinearLayoutManager(this);
    mAdapter = new Adapter(mInventoryItemList);
    mRecyclerView.setHasFixedSize(true);

    mRecyclerView.setLayoutManager(mLayoutManager);
    mRecyclerView.setAdapter(mAdapter);
}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
        case R.id.item1:
            Toast.makeText(this, "Notifications Selected", Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(this, UserPermission.class);
            startActivity(intent);
            return true;

        case R.id.item2:
            Toast.makeText(this, "Help Selected", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.subItem1:
            Toast.makeText(this, "Sorry, No Information at this time. Work in Progress", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.subItem2:
            Toast.makeText(this, "The Amazing Zane Created this app!", Toast.LENGTH_SHORT).show();
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

public void AddPressed(View view) {
    //Function will be added later
    Toast.makeText(this, "Add Button Pressed", Toast.LENGTH_SHORT).show();
}

public void DeletePressed(View view) {
    //Function will be added later
    Toast.makeText(this, "Delete Button Pressed", Toast.LENGTH_SHORT).show();
}
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {

private ArrayList<InventoryItem> mInventoryItems;

public static class ViewHolder extends RecyclerView.ViewHolder {
    public ImageButton mImageButton;
    public TextView mItemName;
    public TextView mItemOwner;
    public TextView mNumberItem;
    public Button mPlusButton;
    public Button mMinusButton;
    public int numItems = 0;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        mImageButton = itemView.findViewById(R.id.Image);
        mItemName = itemView.findViewById(R.id.itemName);
        mNumberItem = itemView.findViewById(R.id.numberOfItems);
        mItemOwner = itemView.findViewById(R.id.itemOwner);

        itemView.findViewById(R.id.plusButton).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int totalItems = ++numItems;
                mNumberItem.setText("Items: " +  totalItems);
            }
        });

        itemView.findViewById(R.id.minusButton).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (numItems > 0) {
                    int totalItems = --numItems;
                    mNumberItem.setText("Items: " + totalItems);
                }

            }
        });
    }
}

public Adapter(ArrayList<InventoryItem> inventoryItem) {
    mInventoryItems = inventoryItem;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View layout = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
    ViewHolder VH = new ViewHolder(layout);
    return VH;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

    InventoryItem currentItem = mInventoryItems.get(position);

    holder.mImageButton.setImageResource(currentItem.getImageResource());
    holder.mItemName.setText(currentItem.getItemName());
    holder.mNumberItem.setText(currentItem.getNumberItem());

}

@Override
public int getItemCount() {
    return mInventoryItems.size();
}
public InventoryItem(int imageResource, String ItemName, String NumberItem, Button plusButton, Button minusButton) {
    mImageButton = imageResource;
    mItemName = ItemName;
    mNumberItem = NumberItem;
    mPlusButton = plusButton;
    mMinusButton = minusButton;
}

public int getImageResource() {
    return mImageButton;
}

public String getItemName() {
    return mItemName;
}

public String getNumberItem() {
    return mNumberItem;
}

public Button getPlusButton() {
    return mPlusButton;
}

public Button getMinusButton() {
    return mMinusButton;
}
public class InventoryDBHelper extends SQLiteOpenHelper {

private Context context;
private static final String DATABASE_NAME = "InventoryList.db";
private static final int DATABASE_VERSION = 1;

private static final String TABLE_NAME = "my_inventory";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_TITLE = "item_name";
private static final String COLUMN_OWNER = "item_owner";
private static final String COLUMN_ITEMNUMBER = "number_items";

public InventoryDBHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    this.context = context;
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    String query = "CREATE TABLE " + TABLE_NAME +
                    " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                    COLUMN_TITLE + " TEXT, " +
                    COLUMN_OWNER + " TEXT, " +
                    COLUMN_ITEMNUMBER + " INTEGER);";
    sqLiteDatabase.execSQL(query);

}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(sqLiteDatabase);
}

void addItem(String title, String owner, int numItem) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();

    cv.put(COLUMN_TITLE, title);
    cv.put(COLUMN_OWNER, owner);
    cv.put(COLUMN_ITEMNUMBER, numItem);
    long result = db.insert(TABLE_NAME, null, cv);

    if(result == -1) {
        Toast.makeText(context, "FAILED", Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(context, "Added Successful", Toast.LENGTH_SHORT).show();
    }
}

Cursor readAllData() {
    String query = "SELECT * FROM " + TABLE_NAME;
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = null;
    if(db != null) {
        cursor = db.rawQuery(query, null);
    }
    return cursor;
}
}