Как я могу изменить цвет указанной карты c в представлении переработчика после получения определенных данных из MySQL столбца базы данных?
Допустим, у меня есть четыре карты, представляющие разные столбцы в базе данных и при получении их состояние от MySQL для конкретной c карты, если true, станет КРАСНЫМ. Если для четырех строк в базе данных 2 строки отображают данные как true, то только две указанные c карты должны стать КРАСНЫМИ.
@Override
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View iteView = inflater.inflate(R.layout.sec_sensors, parent, false);
UserViewHolder viewHolder = new UserViewHolder(iteView);
return viewHolder;
}
@Override
public void onBindViewHolder(final UserViewHolder holder, final int position) {
final UserDetails2 userDetails = secDetailsList.get(position);
holder.tvName.setText(userDetails.getName());
holder.tvAddress.setText(userDetails.getAddress());
//Starting a new thread for continuously invoking database data.
new Thread(new Runnable() {
@Override
public void run() {
while(true){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
UserLoginFunction(userDetails.getAddress());
// Setting color for card layout to RED but not the specific card.
holder.cards.setCardBackgroundColor(Color.RED);
}
}
}).start();
View v1 = View.inflate(context, R.layout.fragment_home, null);
lights = v1.findViewById(R.id.lights);
holder.ivMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final UserDetails2 userDetails = secDetailsList.get(position);
final int userId = userDetails.getUserId();
dbHelper = new UserDatabaseHelper2(context);
db = dbHelper.getWritableDatabase();
Context wrapper = new ContextThemeWrapper(context, R.style.myPopup);
PopupMenu menu = new PopupMenu(wrapper, holder.ivMenu);
menu.inflate(R.menu.popup_menu);
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
db.delete(UserDatabase2.TABLE_NAME2,UserDatabase2._ID + " = " + userId,null);
notifyItemRangeChanged(position,secDetailsList.size());
secDetailsList.remove(position);
notifyItemRemoved(position);
db.close();
new Security().mCount--;
break;
case R.id.update:
Intent intent = new Intent(context, UpdateActivity.class);
intent.putExtra("USERID", userId);
context.startActivity(intent);
break;
}
return false;
}
});
menu.show();
}
});
/* holder.motionoff.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
if(holder.motionoff.isChecked()) {
UserLoginFunction(userDetails.getAddress());
}
else
{
UserLoginFunction(userDetails.getAddress());
}
}
});*/
}
@Override
public int getItemCount() {
return secDetailsList.size();
}
public class UserViewHolder extends RecyclerView.ViewHolder
{
TextView tvName, tvAddress;
ImageView ivMenu;
CardView cards;
public ToggleButton motionoff;
public UserViewHolder(View itemView) {
super(itemView);
motionoff = itemView.findViewById(R.id.motion_off);
cards = itemView.findViewById(R.id.card_view);
tvName = itemView.findViewById(R.id.sec_tv1);
tvAddress = itemView.findViewById(R.id.sec_tv2);
ivMenu = itemView.findViewById(R.id.sec_iv_menu);
}
}
// This class Asynctask retrieves data from Mysql...
public void UserLoginFunction(final String email){
class UserLoginClass extends AsyncTask<String,Void,String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String httpResponseMsg) {
super.onPostExecute(httpResponseMsg);
if(httpResponseMsg.equalsIgnoreCase("1"))
{
Toast.makeText(context, httpResponseMsg,Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(context, "Not found",Toast.LENGTH_LONG).show();
}
}
@Override
protected String doInBackground(String... params) {
hashMap.put("email",params[0]);
finalResult = httpParse.postRequest(hashMap, HttpURL);
return finalResult;
}
}
UserLoginClass userLoginClass = new UserLoginClass();
userLoginClass.execute(email);
}