2016-09-26 3 views
-2

J'ai un CustomView qui affiche un nombre sur sa vue et ce chiffre provient de la base de données. cela fonctionne bien en premier lieu, quand je passe à une autre activité, changez la quantité de base de données et appelez méthode finish();, la première activité apparaîtra et je veux actualiser ou recharger le CustomView qui a initialisé dans le premier chargement pour montrer sa valeur mise à jour. comment est-ce possible?Actualiser/Recharger CustomView dans Android

voici mon CustomClass:

public class Navigation extends LinearLayout { 


public Navigation(Context context) { 
    super(context); 
    this.initComponent(context); 
} 

public Navigation(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.initComponent(context); 
} 

private void initComponent(Context context) { 

    LayoutInflater inflater = LayoutInflater.from(context); 
    View v = inflater.inflate(R.layout.navigation_bar, null, false); 
    this.setOrientation(VERTICAL); 
    this.addView(v); 

    LinearLayout workorder = (LinearLayout) v.findViewById(R.id.workorder); 

    PersianTextView workorder_count = (PersianTextView) v.findViewById(R.id.workorder_count); 

    workorder.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      getContext().startActivity(new Intent(getContext(),Workorders.class)); 
     } 
    }); 

    database db = new database(getContext()); 
    db.open(); 
    Cursor cu = db.Display_shared("SELECT * FROM [Workorder_Repair] WHERE [Workorder_Repair_For_Department_ID] = "+ Login.dep_id+" AND [Workorder_Repair_Status] = 1"); 

    if(cu.getCount()>0) 
     workorder_count.setText(""+cu.getCount()); 
    else 
     workorder_count.setVisibility(INVISIBLE); 

} 

Je l'utilise dans près de 15 activités et je veux rafraîchir

+0

Comment pouvez-vous montrer le numéro dans la vue dans la première endroit? Cela devrait être exactement le même. –

+0

Aussi, comment démarrez-vous la deuxième activité? Utilisez-vous startActivity() ou startActivityForResult()? –

+0

Je le lance par la méthode staratActivity() –

Répondre

0

ajouter une fonction appelée update(); dans mon CustomView et l'appeler de la première méthode de onResume activité comme ceci:

((CustomView) findViewById(R.id.customview)).update(); 
1

Vous pouvez chercher la valeur de base de données et mettre à jour sa valeur et attribuer à votre vue personnalisée par appelant soit la méthode de l'activité onResume() ou onActivityResult() méthode

package com.dialogdemo; 

import android.content.Context; 
import android.content.Intent; 
import android.database.Cursor; 
import android.util.AttributeSet; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.LinearLayout; 

public class Navigation extends LinearLayout { 

    PersianTextView workorder_count; 
    public Navigation(Context context) { 
     super(context); 
     this.initComponent(context); 
    } 

    public Navigation(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.initComponent(context); 
    } 

    private void initComponent(Context context) { 

     LayoutInflater inflater = LayoutInflater.from(context); 
     View v = inflater.inflate(R.layout.navigation_bar, null, false); 
     this.setOrientation(VERTICAL); 
     this.addView(v); 

     LinearLayout workorder = (LinearLayout) v.findViewById(R.id.workorder); 

     workorder_count = (PersianTextView) v.findViewById(R.id.workorder_count); 

     workorder.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       getContext().startActivity(new Intent(getContext(), Workorders.class)); 
      } 
     }); 

     refreshView(); 

    } 

    public void refreshView(){ 
     database db = new database(getContext()); 
     db.open(); 
     Cursor cu = db.Display_shared("SELECT * FROM [Workorder_Repair] WHERE [Workorder_Repair_For_Department_ID] = " + Login.dep_id + " AND [Workorder_Repair_Status] = 1"); 

     if (cu.getCount() > 0) 
      workorder_count.setText("" + cu.getCount()); 
     else 
      workorder_count.setVisibility(INVISIBLE); 
    } 
} 

appel refreshView() méthode onResume() dans toutes les activités de la vôtre, il travaillera

+0

Je veux appeler les codes CustomView sur onResume mais ils seront appelés seulement dans la méthode setContentView! –

+0

Ok, donc dans ce cas, vous devez trouver id pour ces vues à la première fois et après cela, vous utiliserez ces identifiants pour d'autres fins de mise à jour –

+0

Pour plus clair, montrez-moi votre classe de vue personnalisée afin que je puisse le renvoyer –