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(); 
// } 
} 

답변

0
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.getString(cursor.getColumnIndex("ID"))); 
      borrowingItem.setName(cursor.getString(cursor.getColumnIndex("name"))); 
      borrowingItem.setBrand(cursor.getString(cursor.getColumnIndex("brand"))); 
      borrowingItem.setBorrowed(cursor.getString(cursor.getColumnIndex("borrowed"))); 
      borrowingItem.setInOffice(cursor.getString(cursor.getColumnIndex("in_office"))); 
      borrowingItem.setStaffName(cursor.getString(cursor.getColumnIndex("staff_name"))); 
      borrowingItem.setStaffEmail(cursor.getString(cursor.getColumnIndex("email"))); 
      borrowingItem.setTimePeriod(cursor.getString(cursor.getColumnIndex("time_period"))); 
      borrowedItemList.add(borrowingItem); 
      cursor.moveToNext(); 
     } 
     cursor.close(); 
     db.close(); 
     return borrowedItemList; 
    } 

어디서나 데이터 유형 String을 사용하십시오. e String 모델 클래스의 데이터 유형

+0

RecyclerView에서 onClick을 수행 할 때 특정 행을 표시하려는 모든 데이터를 이미 검색했으며이를 편집하거나 삭제하기 위해 editText에서 검색하려고합니다. –

관련 문제