2016-09-26 4 views
-2

Ich habe eine CustomView, die eine Nummer in seiner Ansicht zeigt und diese Ziffer kam aus der Datenbank. das funktioniert in erster Linie, wenn ich zu einer anderen Aktivität wechseln, den Datenbankbetrag ändern und die Methode finish(); aufrufen, wird die erste Aktivität angezeigt und ich möchte die CustomView aktualisieren oder neu laden, die beim ersten Laden initialisiert wurde, um ihren aktualisierten Wert anzuzeigen. wie ist es möglich?Refresh/Reload CustomView in Android

hier ist meine Custom:

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); 

} 

ich es in fast 15 Aktivitäten verwenden und ich möchte es aktualisieren

+0

Wie Sie die Nummer in der Ansicht in der ersten Show # Ort? Dies sollte genau das gleiche sein. –

+0

Wie starten Sie die zweite Aktivität? Verwenden Sie startActivity() oder startActivityForResult()? –

+0

Ich starte es durch StaratActivity() Methode –

Antwort

0

Ich rief eine Funktion update(); in meinem Custom hinzufügen und aus der ersten onResume Methode wie folgt Aktivitäten nennen:

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

Sie Wert aus der Datenbank abrufen können und seinen Wert zu aktualisieren und zu Ihrer benutzerdefinierten Ansicht zuweisen, indem Sie Aufruf entweder onResume() Aktivität Methode oder onActivityResult() Methode

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); 
    } 
} 

Aufruf refreshView() Methode in onResume() in allen deine Aktivitäten wird es funktionieren

+0

Ich möchte die CustomView Codes auf onResume aufrufen, aber sie werden nur in der setContentView Methode aufgerufen! –

+0

Okay, in diesem Fall müssen Sie herausfinden, ID für diese Ansichten zum ersten Mal und danach werden Sie diese IDs für weitere Zwecke der Aktualisierung verwenden –

+0

Für mehr klare zeigen Sie mir Ihre benutzerdefinierte Ansicht Klasse, so dass ich es beziehen kann –

Verwandte Themen