Макет таблицы адаптера Android Studio с помощью searchViewAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Макет таблицы адаптера Android Studio с помощью searchView

Сообщение Гость »


I have a problem in data filtering, where the first row is not read when data filtering is done


Изображение



Изображение


for example in the image above, the word that has the letters "Ore" should display 3 data, but the first data is not readable, only 2 data appear

my adapter :

public class AdapterProduct extends RecyclerView.Adapter { private Context context; private Activity activity; private ArrayList prodcode, prodname, satuan,edited; DBStock dbStock; AdapterProduct(Activity activity, Context context, ArrayList prodcode, ArrayList prodname, ArrayList satuan, ArrayList edited) { this.activity = activity; this.context = context; this.prodcode = prodcode; this.prodname = prodname; this.satuan = satuan; this.edited = edited; } @NonNull @Override public userViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.activity_m_product_detail, parent, false); return new userViewHolder(view); } @RequiresApi(api = Build.VERSION_CODES.M) @Override public void onBindViewHolder(@NonNull final userViewHolder holder, @SuppressLint("RecyclerView") final int position) { int rowPos = holder.getAdapterPosition(); if (rowPos == 0) { holder.txtadpprodcode.setBackgroundResource(R.drawable.table_header_cell_bg); holder.txtadpprodname.setBackgroundResource(R.drawable.table_header_cell_bg); holder.txtadpsatuan.setBackgroundResource(R.drawable.table_header_cell_bg); holder.txtadpedit.setBackgroundResource(R.drawable.table_header_cell_bg); holder.txtadpprodcode.setText("Item Code"); holder.txtadpprodcode.setGravity(1); holder.txtadpprodcode.setTypeface(null, Typeface.BOLD); holder.txtadpprodname.setText("Item Name"); holder.txtadpprodname.setGravity(1); holder.txtadpprodname.setTypeface(null, Typeface.BOLD); holder.txtadpsatuan.setText("Satuan"); holder.txtadpsatuan.setGravity(1); holder.txtadpsatuan.setTypeface(null, Typeface.BOLD); holder.txtadpedit.setText("Option"); holder.txtadpedit.setGravity(1); holder.txtadpedit.setTypeface(null, Typeface.BOLD); } else { holder.txtadpprodcode.setBackgroundResource(R.drawable.table_content_cell_bg); holder.txtadpprodname.setBackgroundResource(R.drawable.table_content_cell_bg); holder.txtadpedit.setBackgroundResource(R.drawable.table_content_cell_bg); holder.txtadpsatuan.setBackgroundResource(R.drawable.table_content_cell_bg); holder.txtadpprodcode.setText(String.valueOf(prodcode.get(position))); holder.txtadpprodname.setText(String.valueOf(prodname.get(position))); holder.txtadpsatuan.setText(String.valueOf(satuan.get(position))); holder.txtadpedit.setBackgroundResource(R.drawable.ic_baseline_more_vert_24); } } @Override public int getItemCount() { return prodname.size(); } class userViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, PopupMenu.OnMenuItemClickListener { TextView txtadpprodcode , txtadpprodname, txtadpedit, txtadpsatuan; userViewHolder(@NonNull View itemView) { super(itemView); txtadpprodcode = itemView.findViewById(R.id.txtprodcode); txtadpprodname = itemView.findViewById(R.id.txtprodname); txtadpedit = itemView.findViewById(R.id.txtedit); txtadpsatuan = itemView.findViewById(R.id.txtsatuan); txtadpedit.setOnClickListener(this); } @Override public void onClick(View v) { showOptMenu(v); } private void showOptMenu(View viewopt) { PopupMenu popupMenu = new PopupMenu(viewopt.getContext(), viewopt); popupMenu.inflate(R.menu.opt_menuproduct); popupMenu.setOnMenuItemClickListener(this); popupMenu.show(); } @Override public boolean onMenuItemClick(MenuItem item) { dbStock = new DBStock(txtadpedit.getContext()); switch (item.getItemId()) { case R.id.opteditproduct: final Dialog dialog = new Dialog(txtadpedit.getContext(), R.style.DialogStyle); dialog.setContentView(R.layout.activity_editproduct); dialog.setCancelable(false); dialog.setCanceledOnTouchOutside(false); dialog.show(); Button btNo = dialog.findViewById(R.id.btn_no); Button btYes = dialog.findViewById(R.id.btn_yes); final EditText edprodcode = dialog.findViewById(R.id.edtprodcode); final EditText edprodname = dialog.findViewById(R.id.edtprodname); final Spinner Spinuom = dialog.findViewById(R.id.spinnerSatuan); ArrayAdapter adapterworkstatus = ArrayAdapter.createFromResource(txtadpedit.getContext(), R.array.array_satuan, android.R.layout.simple_spinner_item); adapterworkstatus.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinuom.setAdapter(adapterworkstatus); edprodcode.setText(txtadpprodcode.getText()); edprodname.setText(txtadpprodname.getText()); btNo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); btYes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dbStock.updateMProduct(edprodcode.getText().toString(),edprodname.getText().toString(), Spinuom.getSelectedItem().toString()); dialog.dismiss(); } }); dialog.show(); return true; case R.id.optdeleteproduct: AlertDialog.Builder builder = new AlertDialog.Builder(txtadpedit.getContext()); builder.setTitle("DELETE"); builder.setMessage("Are You Sure Delete This Product?"); builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int id) { dbStock.removeMProduct(txtadpprodcode.getText().toString()); adapterrefresh(); dialogInterface.dismiss(); } }); builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int id) { dialogInterface.dismiss(); } }); AlertDialog alertDialog = builder.create(); alertDialog.show(); return true; default: return false; } } } public void filterList(ArrayList filterdNames) { this.prodname = filterdNames; notifyDataSetChanged(); } public void adapterrefresh() { notifyDataSetChanged(); } } in Activity

public class MasterProduct extends AppCompatActivity { DBStock dbStock; RecyclerView recyclerView, recyclerView2; ArrayList prodcode, prodname, satuan,edited; AdapterProduct adapterProduct; String sProdCode, sProdName,sUOM; EditText edSearch; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_m_product); Toolbar toolbar = (Toolbar) findViewById(R.id.viewbar); setSupportActionBar(toolbar); getSupportActionBar().setTitle("Master Product"); dbStock = new DBStock(this); recyclerView = (RecyclerView) findViewById(R.id.recyclerView); edSearch = (EditText) findViewById(R.id.edtfilter); prodcode = new ArrayList(); prodname = new ArrayList(); satuan = new ArrayList(); edited = new ArrayList(); adapterProduct = new AdapterProduct(MasterProduct.this, this, prodcode, prodname, satuan,edited); recyclerView.setAdapter(adapterProduct); recyclerView.setLayoutManager(new LinearLayoutManager(MasterProduct.this)); storeDataFromDBLocal(); //SetAdapter(); edSearch.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { filter(s.toString()); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.opt_menuproductadd, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.optAdd: showdialogaddproduct(); return true; case R.id.optImport: Intent intent = new Intent(MasterProduct.this, ImportProduct.class); startActivity(intent); return true; case R.id.optclear: AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("DELETE ALL PRODUCT"); builder.setMessage("Are You Sure Clear Data Product?"); builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int id) { dbStock.removeAllMproduct(); dialogInterface.dismiss(); } }); builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int id) { dialogInterface.dismiss(); } }); AlertDialog alertDialog = builder.create(); alertDialog.show(); return true; default: return false; } } void storeDataFromDBLocal(){ Cursor cursor = dbStock.getMProduct(); if (cursor.moveToFirst()) { do { prodcode.add(cursor.getString(0)); prodname.add(cursor.getString(1)); satuan.add(cursor.getString(2)); } while (cursor.moveToNext()); } } public void ShowToast(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } public void showdialogaddproduct() { final Dialog dialog = new Dialog(this, R.style.DialogStyle); dialog.setContentView(R.layout.activity_addproduct); dialog.setCancelable(false); dialog.setCanceledOnTouchOutside(false); dialog.show(); Button btNo = dialog.findViewById(R.id.btn_no); Button btYes = dialog.findViewById(R.id.btn_yes); final EditText edprodcode = dialog.findViewById(R.id.edtprodcode); final EditText edprodname = dialog.findViewById(R.id.edtprodname); final Spinner Spinuom = dialog.findViewById(R.id.spinnerSatuan); ArrayAdapter adapterworkstatus = ArrayAdapter.createFromResource(this, R.array.array_satuan, android.R.layout.simple_spinner_item); adapterworkstatus.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinuom.setAdapter(adapterworkstatus); btNo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); btYes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sProdCode = edprodcode.getText().toString(); sProdName = edprodname.getText().toString(); sUOM = Spinuom.getSelectedItem().toString(); dbStock.addDataMProduct(sProdCode,sProdName,sUOM); adapterProduct.adapterrefresh(); dialog.dismiss(); } }); dialog.show(); } private void filter(String text) { ArrayList filterdNames = new ArrayList(); for (String s : prodname) { //if the existing elements contains the search input if (s.toLowerCase().contains(text.toLowerCase())) { //adding the element to filtered list filterdNames.add(s); } } adapterProduct.filterList(filterdNames); } } help me fix it if something is wrong thanks...


Источник: https://stackoverflow.com/questions/781 ... searchview
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Можно ли изменить цвет текста в Android SearchView?
    Anonymous » » в форуме Android
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Можно ли изменить цвет текста в Android SearchView?
    Anonymous » » в форуме Android
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Можно ли изменить цвет текста в Android SearchView?
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при раздувании класса android.support.v7.widget.SearchView
    Anonymous » » в форуме Android
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Фон Android searchView, когда курсор сфокусирован и перемещается, скрывает текст за белым полем
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»