0
안녕하세요 여러분 Recyclerview에 이미 표시된 데이터베이스의 특정 행에 대한 모든 정보를 표시하려고합니다. 어떻게해야할지 모릅니다. 그리고 어떤 데이터 유형을 사용해야합니까? 여기 sqlite onClick RecyclerView에서 선택된 행에 대한 모든 레코드를 표시하고 업데이트 및 삭제하는 방법
내 활동 :import android.content.Context;
import android.content.Intent;
import android.graphics.Point;
import android.os.AsyncTask;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.util.Log;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.PopupWindow;
import android.widget.Spinner;
import android.widget.TextView;
import com.abed.montage.invintorybarcodeapp.Adapters.StorageUnitRecyclerViewAdapter;
import com.abed.montage.invintorybarcodeapp.DataClasses.StorageUnitItemClass;
import com.abed.montage.invintorybarcodeapp.Database.MyDatabase;
import java.util.List;
public class StorageUnitActivity extends AppCompatActivity implements SearchView.OnQueryTextListener{
private MyDatabase db;
SearchView mSearchView;
RecyclerView rv;
String nameValue;
StorageUnitRecyclerViewAdapter adapter;
List<StorageUnitItemClass> storageUnitList;
FloatingActionButton addItemFAB , searchItemFAB;
LinearLayoutManager llm;
GetData getDataTask;
private PopupWindow popWindow;
EditText codeTxt , nameTxt , rowTxt , columnTxt ,userTxt ;
Spinner brandTxt , statusTxt ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_storage_unit);
addItemFAB = (FloatingActionButton) findViewById(R.id.fab_add_item);
searchItemFAB = (FloatingActionButton) findViewById(R.id.fab_search_item);
rv = (RecyclerView) findViewById(R.id.recycler_view);
llm = new LinearLayoutManager(this);
getDataTask = new GetData();
getDataTask.execute();
addItemFAB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(StorageUnitActivity.this , AddStorageUnitItemActivity.class));
}
});
searchItemFAB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(StorageUnitActivity.this , SearchedBarcodeActivity.class));
}
});
rv.addOnItemTouchListener(
new StorageUnitRecyclerViewAdapter(this, new StorageUnitRecyclerViewAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
// TODO Handle item click
nameValue = storageUnitList.get(position).getName();
// onShowPopup(nameValue);
Log.e("@@@@@", "" + position);
}
})
);
}
@Override
public boolean onQueryTextSubmit(String query) {
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText.toString());
return true;
}
public class GetData extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// pd = ProgressDialog.show(StorageUnitActivity.this, getString(R.string.app_name), "Data Loading ... ");
}
@Override
protected Void doInBackground(Void... params) {
db = MyDatabase.getInstance(StorageUnitActivity.this);
storageUnitList = db.getListStorageUnit();
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// pd.dismiss();
if (storageUnitList != null) {
adapter = new StorageUnitRecyclerViewAdapter(storageUnitList);
rv.setLayoutManager(llm);
adapter.notifyDataSetChanged();
rv.setAdapter(adapter);
}
}
}
@Override
protected void onResume() {
super.onResume();
// getDataTask = new GetData();
// getDataTask.execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.searchmenu, menu);
mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
setupSearchView();
return super.onCreateOptionsMenu(menu);
}
private void setupSearchView() {
mSearchView.setIconifiedByDefault(true);
mSearchView.setOnQueryTextListener(this);
//mSearchView.setQueryHint("Search Here");
int id = mSearchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
EditText searchEditText = (EditText) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
// searchEditText.setTextColor(getResources().getColor(R.color.cardview));
// searchEditText.setHintTextColor(getResources().getColor(R.color.cardview));
searchEditText.setHint("Search Here");
}
// public void onShowPopup(String name){
//
// LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// // inflate the custom popup layout
// final View inflatedView = inflater.inflate(R.layout.popup_layout, null,false);
// StorageUnitItemClass temp = new StorageUnitItemClass();
// // db.getDatabaseName(name);
// codeTxt = (EditText) inflatedView.findViewById(R.id.codeEdit);
// nameTxt = (EditText) inflatedView.findViewById(R.id.nameEdit);
// brandTxt = (Spinner) inflatedView.findViewById(R.id.brandSpinner);
// statusTxt = (Spinner) inflatedView.findViewById(R.id.statusSpinner);
// rowTxt = (EditText) inflatedView.findViewById(R.id.rawEdit);
// columnTxt = (EditText) inflatedView.findViewById(R.id.columnEdit);
// userTxt = (EditText) inflatedView.findViewById(R.id.userEdit);
// Display display = getWindowManager().getDefaultDisplay();
// final Point size = new Point();
// display.getSize(size);
// int mDeviceHeight = size.y;
//
//
// popWindow = new PopupWindow(inflatedView, size.x - 50, size.y - 230, true);
// // set a background drawable with rounders corners
// popWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.pop_up_shape));
// // make it focusable to show the keyboard to enter in `EditText`
// popWindow.setFocusable(true);
// // make it outside touchable to dismiss the popup window
// popWindow.setOutsideTouchable(true);
// // show the popup at bottom of the screen and set some margin at bottom ie,
// // popWindow.showAtLocation(Gravity.BOTTOM, 0,100);
//
// }
public void onShowPopup(View v , int position){
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// inflate the custom popup layout
final View inflatedView = inflater.inflate(R.layout.popup_layout, null,false);
codeTxt = (EditText) inflatedView.findViewById(R.id.codeEdit);
nameTxt = (EditText) inflatedView.findViewById(R.id.nameEdit);
brandTxt = (Spinner) inflatedView.findViewById(R.id.brandSpinner);
statusTxt = (Spinner) inflatedView.findViewById(R.id.statusSpinner);
rowTxt = (EditText) inflatedView.findViewById(R.id.rawEdit);
columnTxt = (EditText) inflatedView.findViewById(R.id.columnEdit);
userTxt = (EditText) inflatedView.findViewById(R.id.userEdit);
Display display = getWindowManager().getDefaultDisplay();
final Point size = new Point();
display.getSize(size);
int mDeviceHeight = size.y;
popWindow = new PopupWindow(inflatedView, size.x - 50, size.y - 230, true);
// set a background drawable with rounders corners
popWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.pop_up_shape));
// make it focusable to show the keyboard to enter in `EditText`
popWindow.setFocusable(true);
// make it outside touchable to dismiss the popup window
popWindow.setOutsideTouchable(true);
// show the popup at bottom of the screen and set some margin at bottom ie,
popWindow.showAtLocation(v, Gravity.BOTTOM, 0,100);
}
}
내가 원료 선택의 onclick RecyclerView
하고 여기에서 MyDatabase 클래스에 대한 전체 세부 사항 표시 할 위치 onShowPopUp는()입니다
:
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import com.abed.montage.invintorybarcodeapp.DataClasses.BorrowingClass;
import com.abed.montage.invintorybarcodeapp.DataClasses.StorageUnitItemClass;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
import java.util.ArrayList;
import java.util.List;
/**
* Created by hp15-AY on 04/22/2017.
*/
public class MyDatabase extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "StorageUnitDB.sqlite";
private static final int DATABASE_VERSION = 1;
private static MyDatabase mInstance = null;
public static MyDatabase getInstance(Context ctx) {
if (mInstance == null) {
mInstance = new MyDatabase(ctx.getApplicationContext());
}
return mInstance;
}
public MyDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public List<StorageUnitItemClass> getListStorageUnit() {
StorageUnitItemClass storageUnitItem = null;
List<StorageUnitItemClass> storageUnitItemList = new ArrayList<>();
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqlSelect = {"id", "code", "name","brand" , "status", "column", "raw", "user"};
String sqlTables = "StorageUnitDB";
qb.setTables(sqlTables);
Cursor cursor = qb.query(db, sqlSelect, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
storageUnitItem = new StorageUnitItemClass(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5) ,cursor.getString(6) , cursor.getString(7));
storageUnitItem.setId(cursor.getInt(0));
storageUnitItemList.add(storageUnitItem);
cursor.moveToNext();
}
cursor.close();
db.close();
return storageUnitItemList;
}
public List<BorrowingClass> getListBorrowing() {
BorrowingClass borrowingItem = null;
List<BorrowingClass> borrowedItemList = new ArrayList<>();
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqlSelect = {"ID","name", "brand", "borrowed", "in_office" , "staff_name" ,"email","time_period" };
String sqlTables = "BorrowingTB";
qb.setTables(sqlTables);
Cursor cursor = qb.query(db, sqlSelect, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
// borrowingItem = new BorrowingClass(cursor.getInt(0), cursor.getString(1), cursor.getString(2),cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6) ,cursor.getString(7));
borrowingItem = new BorrowingClass();
borrowingItem.setId(cursor.getInt(0));
borrowingItem.setName(cursor.getString(1));
borrowingItem.setBrand(cursor.getString(2));
borrowingItem.setBorrowed(cursor.getString(3));
borrowingItem.setInOffice(cursor.getString(4));
borrowingItem.setStaffName(cursor.getString(5));
borrowingItem.setStaffEmail(cursor.getString(6));
borrowingItem.setTimePeriod(cursor.getString(7));
borrowedItemList.add(borrowingItem);
cursor.moveToNext();
}
cursor.close();
db.close();
return borrowedItemList;
}
public void insertBorrowing(String name , String brand , String borrowed , String inOffice , String staffName , String email , String timePeriod){
SQLiteDatabase db = getWritableDatabase();
ContentValues insertValues = new ContentValues();
insertValues.put("name", name);
insertValues.put("brand", brand);
insertValues.put("borrowed", borrowed);
insertValues.put("in_office", inOffice);
insertValues.put("name", staffName);
insertValues.put("email", email);
insertValues.put("time_period", timePeriod);
db.insert("BorrowingTB", null, insertValues);
}
public void insertStorageUnit(String code , String name , String brand , String status , String raw , String coulmn , String user){
SQLiteDatabase db = getWritableDatabase();
ContentValues insertValues = new ContentValues();
insertValues.put("code", code);
insertValues.put("name", name);
insertValues.put("brand", brand);
insertValues.put("status", status);
insertValues.put("column", coulmn);
insertValues.put("raw", raw);
insertValues.put("user", user);
db.insert("StorageUnitDB", null, insertValues);
}
public List<StorageUnitItemClass> searchBarCode(String code){
StorageUnitItemClass storageUnitItem = null;
List<StorageUnitItemClass> storageUnitItemList = new ArrayList<>();
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqlSelect = {"id", "code", "name","brand" , "status", "column", "raw", "user"};
String sqlTables = "StorageUnitDB";
qb.setTables(sqlTables);
String sqlFilter = "code= '"+code+"'";
Cursor cursor = qb.query(db, sqlSelect, sqlFilter, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
storageUnitItem = new StorageUnitItemClass(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5) ,cursor.getString(6) , cursor.getString(7));
storageUnitItem.setId(cursor.getInt(0));
storageUnitItemList.add(storageUnitItem);
cursor.moveToNext();
}
cursor.close();
db.close();
return storageUnitItemList;
}
public List<StorageUnitItemClass> searchStorageName(String name){
StorageUnitItemClass storageUnitItem = null;
List<StorageUnitItemClass> storageUnitItemList = new ArrayList<>();
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqlSelect = {"id", "code", "name","brand" , "status", "column", "raw", "user"};
String sqlTables = "StorageUnitDB";
qb.setTables(sqlTables);
String sqlFilter = "name= '"+name+"'";
Cursor cursor = qb.query(db, sqlSelect, sqlFilter, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
storageUnitItem = new StorageUnitItemClass(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5) ,cursor.getString(6) , cursor.getString(7));
storageUnitItem.setId(cursor.getInt(0));
storageUnitItemList.add(storageUnitItem);
cursor.moveToNext();
}
cursor.close();
db.close();
return storageUnitItemList;
}
// public void updateRecord(int id , String code , String row , String coulmn , String user) {
// SQLiteDatabase db = getReadableDatabase();
// ContentValues contentValues = new ContentValues();
// contentValues.put("code", code);
// contentValues.put("row", row);
// contentValues.put("coulmn", coulmn);
// contentValues.put("user", user);
// db.update("CashData", contentValues, id + " = ?", new String[]{contact.getID()});
// db.close();
// }
}
을
RecyclerView에서 onClick을 수행 할 때 특정 행을 표시하려는 모든 데이터를 이미 검색했으며이를 편집하거나 삭제하기 위해 editText에서 검색하려고합니다. –