我希望列表视图行的最后一项在其值为“En curs”时闪烁?但我看到其他具有不同值的行也在闪烁

发布于 2025-01-09 12:58:31 字数 2908 浏览 1 评论 0原文

显示示例的图像我使用此代码作为自定义列表视图适配器

View vi = convertView;
    if (vi == null)
    {
        if(u.get(position).getLivreur().equalsIgnoreCase("NB"))
            vi = inflater.inflate(R.layout.row_livraison_non_assigne, null);
        else
            vi = inflater.inflate(R.layout.row_livraison, null);
    }

    TextView id_facture = (TextView) vi.findViewById(R.id.id_facture);
    TextView client = (TextView) vi.findViewById(R.id.client);
    TextView date = (TextView) vi.findViewById(R.id.date);
    TextView livreur = (TextView) vi.findViewById(R.id.livreur);
    TextView etat = (TextView) vi.findViewById(R.id.etat);
    id_facture.setText("BL / Facture N : "+ u.get(position).getFacture_id());
    client.setText("Client : "+u.get(position).getClient());
    date.setText("Date : "+u.get(position).getDate_facturation());
    livreur.setText("Livreur :  "+ u.get(position).getLivreur_name());
    etat.setText(u.get(position).getEtat());
    String et = etat.getText().toString();
    Toast.makeText(context, position+" "+et, Toast.LENGTH_SHORT).show();
    if(et.equalsIgnoreCase("Programmé"))
    {
        etat.setTextColor(Color.RED);
    }
    else
    if(et.equalsIgnoreCase("Livré"))
    {
        etat.setTextColor(Color.GREEN);

    }
    else
    if(et.equalsIgnoreCase("En cours")){

        ObjectAnimator animator =  ObjectAnimator.ofInt(etat,"textColor",Color.GREEN,Color.RED);
        animator.setDuration(500);
        animator.setEvaluator(new ArgbEvaluator());
        animator.setRepeatMode(ValueAnimator.REVERSE);
        animator.setRepeatCount(ValueAnimator.INFINITE);
        animator.start();
    }

return vi;

我使用此代码来填充传递给适配器的列表:

@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
    for(DataSnapshot snap : snapshot.getChildren()){
        if(snap.child("date_livraison").getValue(String.class).toString().equalsIgnoreCase(d)){
            livraison liv = new livraison();
            liv.setId(snap.child("id").getValue(String.class).toString());
            liv.setClient(snap.child("client").getValue(String.class).toString());
            liv.setAddr(snap.child("addr").getValue(String.class).toString());
            liv.setLivreur(snap.child("livreur").getValue(String.class).toString());
            liv.setFacture_id(snap.child("facture_id").getValue(String.class).toString());
            liv.setLivreur_name(snap.child("livreur_name").getValue(String.class).toString());
            liv.setDate_facturation(snap.child("date_facturation").getValue(String.class).toString());
            liv.setEtat(snap.child("etat").getValue(String.class).toString());
            livraisons.add(liv);
            adapter.notifyDataSetChanged();
        }
    }
}

如果每行的最后一个文本视图的值等于“En cours”,我需要闪烁,我看到其他行正在闪烁,尽管具有不同的值。

an image showing an example I use this code as a custom listview adapter

View vi = convertView;
    if (vi == null)
    {
        if(u.get(position).getLivreur().equalsIgnoreCase("NB"))
            vi = inflater.inflate(R.layout.row_livraison_non_assigne, null);
        else
            vi = inflater.inflate(R.layout.row_livraison, null);
    }

    TextView id_facture = (TextView) vi.findViewById(R.id.id_facture);
    TextView client = (TextView) vi.findViewById(R.id.client);
    TextView date = (TextView) vi.findViewById(R.id.date);
    TextView livreur = (TextView) vi.findViewById(R.id.livreur);
    TextView etat = (TextView) vi.findViewById(R.id.etat);
    id_facture.setText("BL / Facture N : "+ u.get(position).getFacture_id());
    client.setText("Client : "+u.get(position).getClient());
    date.setText("Date : "+u.get(position).getDate_facturation());
    livreur.setText("Livreur :  "+ u.get(position).getLivreur_name());
    etat.setText(u.get(position).getEtat());
    String et = etat.getText().toString();
    Toast.makeText(context, position+" "+et, Toast.LENGTH_SHORT).show();
    if(et.equalsIgnoreCase("Programmé"))
    {
        etat.setTextColor(Color.RED);
    }
    else
    if(et.equalsIgnoreCase("Livré"))
    {
        etat.setTextColor(Color.GREEN);

    }
    else
    if(et.equalsIgnoreCase("En cours")){

        ObjectAnimator animator =  ObjectAnimator.ofInt(etat,"textColor",Color.GREEN,Color.RED);
        animator.setDuration(500);
        animator.setEvaluator(new ArgbEvaluator());
        animator.setRepeatMode(ValueAnimator.REVERSE);
        animator.setRepeatCount(ValueAnimator.INFINITE);
        animator.start();
    }

return vi;

I use this code to fill the list passed to the adapter :

@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
    for(DataSnapshot snap : snapshot.getChildren()){
        if(snap.child("date_livraison").getValue(String.class).toString().equalsIgnoreCase(d)){
            livraison liv = new livraison();
            liv.setId(snap.child("id").getValue(String.class).toString());
            liv.setClient(snap.child("client").getValue(String.class).toString());
            liv.setAddr(snap.child("addr").getValue(String.class).toString());
            liv.setLivreur(snap.child("livreur").getValue(String.class).toString());
            liv.setFacture_id(snap.child("facture_id").getValue(String.class).toString());
            liv.setLivreur_name(snap.child("livreur_name").getValue(String.class).toString());
            liv.setDate_facturation(snap.child("date_facturation").getValue(String.class).toString());
            liv.setEtat(snap.child("etat").getValue(String.class).toString());
            livraisons.add(liv);
            adapter.notifyDataSetChanged();
        }
    }
}

I need that the last textview of every row to blink if its value is equal to "En cours" , I see that other rows are blinking despite of having a different value.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文