I trying make looking position item for warehouse apps. Here my UI
Note : L1 means Lemari 1, E means row E, and 1 means column 1.
My target now is when user click list of a item, that item will be highlighted and rack which have same data will change colour. Example if i click list a item which stored in rack L1E1, row list L1E1 will be highlighted and rack in L1E1 will change colour. I can change colour rack and background row recyclerview but i can't sync it. Here my code
MyMain.Java
public class AdminTrackingActivity extends AppCompatActivity {
ImageView btnBack, btnKanan, btnKiri,L1A1, L1A2, L1B1, L1B2, L1C1, L1C2, L1D1, L1D2, L1E1, L1E2;
RecyclerView mRecyclerViewtr;
private EditText searchEnginetr;
private FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();
DatabaseReference mDatabaseAddStock = mDatabase.getReference().child("Stock").child("In").child("StockIn");
DatabaseReference mBuyMore = mDatabase.getReference().child("BuyMore");
/*inisiasi adapter*/
private AdminListAdapterTracking adapter;
private ArrayList<AdminStockIn> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin_tracking);
btnBack = findViewById(R.id.btn_back_AdminTracking);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(AdminTrackingActivity.this, MainMenuAdminActivity.class));
}
});
btnKanan = findViewById(R.id.btn_kanan_AdminTracking);
btnKanan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(AdminTrackingActivity.this, AdminTrackingActivity2.class));
}
});
btnKiri=findViewById(R.id.btn_kiri_AdminTracking);
btnKiri.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(AdminTrackingActivity.this, AdminTrackingActivity5.class));
}
});
L1A1 = findViewById(R.id.AdminTracking_L1A1);
L1A2 = findViewById(R.id.AdminTracking_L1A2);
L1B1 = findViewById(R.id.AdminTracking_L1B1);
L1B2 = findViewById(R.id.AdminTracking_L1B2);
L1C1 = findViewById(R.id.AdminTracking_L1C1);
L1C2 = findViewById(R.id.AdminTracking_L1C2);
L1D1 = findViewById(R.id.AdminTracking_L1D1);
L1D2 = findViewById(R.id.AdminTracking_L1D2);
L1E1 = findViewById(R.id.AdminTracking_L1E1);
L1E2 = findViewById(R.id.AdminTracking_L1E2);
L1A1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_abu_edit));
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
});
L1A2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_abu_edit));
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
});
L1B1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_abu_edit));
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
});
L1B2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_abu_edit));
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
});
L1C1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_abu_edit));
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
});
L1C2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_abu_edit));
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
});
L1D1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_abu_edit));
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
});
L1D2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_abu_edit));
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
});
L1E1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_abu_edit));
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
});
L1E2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_abu_edit));
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
});
DatabaseReference mDatabaseAddRack = mDatabase.getReference().child("Stock").child("In").child("StockIn");
mDatabaseAddRack.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String rack = snapshot.child("rack").getValue(String.class);
if (rack != null && rack.equals("L1A1")) {
L1A1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
} else if(rack != null && rack.equals("L1A2")){
L1A2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
} else if(rack != null && rack.equals("L1B1")){
L1B1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
} else if(rack != null && rack.equals("L1B2")){
L1B2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
} else if(rack != null && rack.equals("L1C1")){
L1C1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
} else if(rack != null && rack.equals("L1C2")){
L1C2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
} else if(rack != null && rack.equals("L1D1")){
L1D1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
} else if(rack != null && rack.equals("L1D2")){
L1D2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}else if(rack != null && rack.equals("L1E1")){
L1E1.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
} else if(rack != null && rack.equals("L1E2")){
L1E2.setImageDrawable(getResources().getDrawable(R.drawable.kotak_merah_edit));
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
/*recycler view*/
mRecyclerViewtr = (RecyclerView) findViewById(R.id.RV_AdminTracking);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
mRecyclerViewtr.setLayoutManager(layoutManager);
mRecyclerViewtr.setHasFixedSize(true);
list = new ArrayList<>();
adapter = new AdminListAdapterTracking(list, this);
mRecyclerViewtr.setAdapter(adapter);
/*fitur search*/
searchEnginetr = (EditText) findViewById(R.id.searchEngine_AdminTracking);
searchEnginetr.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) {
if (!s.toString().isEmpty()) {
search(s.toString());
} else {
search("");
}
}
});
readData();
}
/*membaca data stock in*/
private void readData() {
mDatabaseAddStock.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.hasChildren()) {
list.clear();
for (DataSnapshot dss : snapshot.getChildren()) {
final AdminStockIn adminStockIn = dss.getValue(AdminStockIn.class);
list.add(adminStockIn);
}
AdminListAdapterTracking adminListAdapterTracking = new AdminListAdapterTracking(list, getApplicationContext());
mRecyclerViewtr.setAdapter(adminListAdapterTracking);
adminListAdapterTracking.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
/*lanjutan fitur search*/
private void search(String s) {
Query querydate = mDatabaseAddStock.orderByChild("date").startAt(s).endAt(s + "\uf8ff");
Query queryname = mDatabaseAddStock.orderByChild("name").startAt(s).endAt(s + "\uf8ff");
Query queryvendor = mDatabaseAddStock.orderByChild("vendor").startAt(s).endAt(s + "\uf8ff");
Query queryrack = mDatabaseAddStock.orderByChild("rack").startAt(s).endAt(s + "\uf8ff");
querydate.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.hasChildren()) {
list.clear();
for (DataSnapshot dss : snapshot.getChildren()) {
final AdminStockIn adminStockIn = dss.getValue(AdminStockIn.class);
list.add(adminStockIn);
}
AdminListAdapterTracking adminListAdapterTracking = new AdminListAdapterTracking(list, getApplicationContext());
mRecyclerViewtr.setAdapter(adminListAdapterTracking);
adminListAdapterTracking.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
queryname.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.hasChildren()) {
list.clear();
for (DataSnapshot dss : snapshot.getChildren()) {
final AdminStockIn adminStockIn = dss.getValue(AdminStockIn.class);
list.add(adminStockIn);
}
AdminListAdapterTracking adminListAdapterTracking = new AdminListAdapterTracking(list, getApplicationContext());
mRecyclerViewtr.setAdapter(adminListAdapterTracking);
adminListAdapterTracking.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
queryvendor.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.hasChildren()) {
list.clear();
for (DataSnapshot dss : snapshot.getChildren()) {
final AdminStockIn adminStockIn = dss.getValue(AdminStockIn.class);
list.add(adminStockIn);
}
AdminListAdapterTracking adminListAdapterTracking = new AdminListAdapterTracking(list, getApplicationContext());
mRecyclerViewtr.setAdapter(adminListAdapterTracking);
adminListAdapterTracking.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
queryrack.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.hasChildren()) {
list.clear();
for (DataSnapshot dss : snapshot.getChildren()) {
final AdminStockIn adminStockIn = dss.getValue(AdminStockIn.class);
list.add(adminStockIn);
}
AdminListAdapterTracking adminListAdapterTracking = new AdminListAdapterTracking(list, getApplicationContext());
mRecyclerViewtr.setAdapter(adminListAdapterTracking);
adminListAdapterTracking.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
/*tombol kembali*/
@Override
public void onBackPressed() {
super.onBackPressed();
moveTaskToBack();
}
private void moveTaskToBack() {
startActivity(new Intent(AdminTrackingActivity.this, MainMenuAdminActivity.class));
}
}
MyAdapter.Java
public class AdminListAdapterTracking extends RecyclerView.Adapter<AdminListAdapterTracking.MyViewHolder> {
ArrayList<AdminStockIn> mList;
Context context;
Integer row_index = -1;
public AdminListAdapterTracking(ArrayList<AdminStockIn> mList, Context context) {
this.mList = mList;
this.context = context;
}
@NonNull
@Override
public AdminListAdapterTracking.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.admin_list_tracking, parent, false);
return new AdminListAdapterTracking.MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull AdminListAdapterTracking.MyViewHolder holder, final int position) {
final AdminStockIn adminStockIn = mList.get(position);
holder.date.setText(adminStockIn.getDate());
holder.time.setText(adminStockIn.getTime());
holder.name.setText(adminStockIn.getName());
holder.quantity.setText(adminStockIn.getQuantity().toString());
holder.vendor.setText(adminStockIn.getVendor());
holder.rack.setText(adminStockIn.getRack());
holder.layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
row_index=position;
notifyDataSetChanged();
}
});
if (row_index==position){
holder.layout.setBackgroundColor(Color.parseColor("#1064AE"));
}else {
holder.layout.setBackgroundColor(Color.parseColor("#ffffff"));
}
}
@Override
public int getItemCount() {
return mList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
TextView date;
TextView time;
TextView name;
TextView quantity;
TextView vendor;
TextView rack;
RelativeLayout layout;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
date = itemView.findViewById(R.id.itemDate_AdminTracking);
time = itemView.findViewById(R.id.itemTime_AdminTracking);
name = itemView.findViewById(R.id.itemName_AdminTracking);
quantity = itemView.findViewById(R.id.itemQuantity_AdminTracking);
vendor = itemView.findViewById(R.id.itemVendor_AdminTracking);
rack = itemView.findViewById(R.id.itemRack_AdminTracking);
layout = itemView.findViewById(R.id.layoutAdminTracking);
}
}
}
How to sync my recycler view and my rack?