2013-01-10 26 views
1

我有一個線程,一旦新elemnt被添加到我的數據庫我收到通知,通知顯示,並且一切都好,但我的問題是我怎麼去從我的Viewpager從這個通知添加的最後一個片段?如何從通知中添加到我的Viewpager中的最後一個片段?

公共類AllProductsActivity擴展BaseActivity實現OnTaskFinishedListener {

public AllProductsActivity() { 
    super(1); 
} 


private ProgressDialog pDialog; 
private JSONParser jParser = new JSONParser(); 



private static final String TAG_SUCCESS = "success"; 
private static final String TAG_PRODUCTS = "ordinateur"; 
private static final String TAG_PRICE = "prix_ordi"; 
private static final String TAG_NAME = "nom_ordi"; 
private static final String TAG_MARK = "marque_ordi"; 
private static final String TAG_PROC = "proc_ordi"; 
private static final String TAG_DISK = "dd_ordi"; 
private static final String TAG_RAM = "ram_ordi"; 
private static final String TAG_GRAPHICS = "gra_ordi"; 
private static final String TAG_DESC = "des_ordi"; 
private static final String TAG_PATH = "path_ordi"; 

private MyPagerAdapter mPagerAdapter; 

private JSONArray products = null; 
private ArrayList <Ordinateur> ordinateurList = new ArrayList<Ordinateur>(); 
private List<Fragment> fragments = new Vector<Fragment>(); 

private int new_row, initial_row; 
private static final int ID_NOTIFICATION = 1990; 
private boolean condition = false; 
private ViewPager vp; 
private ArrayList<Fragment> mFragments; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    vp = new ViewPager(this); 
    vp.setId(R.id.pager); 
    new LoadAllProducts(this).execute(url_all_products); 
    setContentView(vp); 

    ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(5); 
    scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() { 
     public void run() { 
      new LongRunningGetIO().execute(); 
     } 
    }, 0, 5, TimeUnit.SECONDS); 

    vp.setOnPageChangeListener(new OnPageChangeListener() { 
     @Override 
     public void onPageScrollStateChanged(int arg0) { } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { } 

     @Override 
     public void onPageSelected(int position) { 
      switch (position) { 
      case 0: 
       getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
       break; 
      default: 
       getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
       break; 
      } 
     } 

    }); 

    vp.setCurrentItem(0); 
    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
} 

@Override 
public void onTaskFinishedOrdinateur() { 
    vp.setAdapter(new OrdinateurPagerAdapter(getSupportFragmentManager())); 
} 

@Override 
public void onTaskFinishedLastOrdinateur(Ordinateur ordinateur) { 
    vp.setAdapter(new OrdinateurPagerAdapter(getSupportFragmentManager())); 
    createNotify(ordinateur.getName()); 
} 

class LoadAllProducts extends AsyncTask<String, String, String> { 

    OnTaskFinishedListener onTaskFinishedListener; 

    public LoadAllProducts(OnTaskFinishedListener _onTaskFinishedListener) 
    { 
     onTaskFinishedListener = _onTaskFinishedListener; 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(AllProductsActivity.this); 
     pDialog.setMessage("Chargement des produits, , veuillez patienter..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(false); 
     pDialog.show(); 
    } 

    protected String doInBackground(String... args) { 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     JSONObject json = jParser.makeHttpRequest(args[0], "GET", params); 

     Log.d("json", json.toString()); 

     try { 
      int success = json.getInt(TAG_SUCCESS); 
      if (success == 1) { 
       products = json.getJSONArray(TAG_PRODUCTS); 
       for (int i = 0; i < products.length(); i++) { 
        JSONObject c = products.getJSONObject(i); 

        String price = c.getString(TAG_PRICE); 
        String name = c.getString(TAG_NAME); 
        String ram = c.getString(TAG_RAM); 
        String dd = c.getString(TAG_DISK); 
        String gra = c.getString(TAG_GRAPHICS); 
        String proc = c.getString(TAG_PROC); 
        String mark = c.getString(TAG_MARK); 
        String desc = c.getString(TAG_DESC); 
        String path = c.getString(TAG_PATH); 

        Ordinateur ordinateur = new Ordinateur(); 
        ordinateur.setPrice(price); 
        ordinateur.setName(name); 
        ordinateur.setRam(ram); 
        ordinateur.setDd(dd); 
        ordinateur.setGra(gra); 
        ordinateur.setProc(proc); 
        ordinateur.setMark(mark); 
        ordinateur.setDesc(desc); 
        ordinateur.setPath(path); 
        ordinateurList.add(ordinateur); 
       } 
      } 
      else { 
       // no products found 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    protected void onPostExecute(String file_url) { 
     pDialog.dismiss(); 
     onTaskFinishedListener.onTaskFinishedOrdinateur(); 
    } 

} 

class LoadLastProducts extends AsyncTask<String, String, String> { 

    OnTaskFinishedListener onTaskFinishedListener; 
    Ordinateur ordinateur = new Ordinateur(); 

    public LoadLastProducts(OnTaskFinishedListener _onTaskFinishedListener) 
    { 
     onTaskFinishedListener = _onTaskFinishedListener; 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    protected String doInBackground(String... args) { 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     JSONObject json = jParser.makeHttpRequest(args[0], "GET", params); 

     Log.d("json", json.toString()); 

     try { 
      int success = json.getInt(TAG_SUCCESS); 
      if (success == 1) { 
       products = json.getJSONArray(TAG_PRODUCTS); 
       for (int i = 0; i < products.length(); i++) { 
        JSONObject c = products.getJSONObject(i); 

        String price = c.getString(TAG_PRICE); 
        String name = c.getString(TAG_NAME); 
        String ram = c.getString(TAG_RAM); 
        String dd = c.getString(TAG_DISK); 
        String gra = c.getString(TAG_GRAPHICS); 
        String proc = c.getString(TAG_PROC); 
        String mark = c.getString(TAG_MARK); 
        String desc = c.getString(TAG_DESC); 
        String path = c.getString(TAG_PATH); 

        ordinateur.setPrice(price); 
        ordinateur.setName(name); 
        ordinateur.setRam(ram); 
        ordinateur.setDd(dd); 
        ordinateur.setGra(gra); 
        ordinateur.setProc(proc); 
        ordinateur.setMark(mark); 
        ordinateur.setDesc(desc); 
        ordinateur.setPath(path); 
        ordinateurList.add(ordinateur); 
       } 
      } 
      else { 
       // no products found 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    protected void onPostExecute(String file_url) { 
     onTaskFinishedListener.onTaskFinishedLastOrdinateur(ordinateur); 
    } 

} 

class LongRunningGetIO extends AsyncTask <Void, Void, String> { 

    protected String getASCIIContentFromEntity(HttpEntity entity) throws IllegalStateException, IOException { 
     InputStream in = entity.getContent(); 
     StringBuffer out = new StringBuffer(); 
     int n = 1; 
     while (n>0) { 
      byte[] b = new byte[4096]; 
      n = in.read(b); 
      if (n>0) out.append(new String(b, 0, n)); 
     } 
     return out.toString(); 
    } 

    @Override 
    protected void onPreExecute() { 
     new_row = initial_row; 
    } 

    @Override 
    protected String doInBackground(Void... params) { 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpContext localContext = new BasicHttpContext(); 
     HttpGet httpGet = new HttpGet(url_row); 
     String text = null; 
     try { 
      HttpResponse response = httpClient.execute(httpGet, localContext); 
      HttpEntity entity = response.getEntity(); 
      text = getASCIIContentFromEntity(entity); 
     } catch (Exception e) { 
      return e.getLocalizedMessage(); 
     } 
     return text; 
    } 

    protected void onPostExecute(String results) { 
     initial_row = Integer.parseInt(results); 
     if (initial_row > new_row) { 
      if (new_row > 0){ 
       Log.d("added", "added"); 
       new LoadLastProducts(AllProductsActivity.this).execute(url_last_product); 
      } 
     } 
    } 
} 

public class OrdinateurPagerAdapter extends FragmentPagerAdapter { 

    public OrdinateurPagerAdapter(FragmentManager fm) { 
     super(fm); 
     mFragments = new ArrayList<Fragment>(); 
     for (Ordinateur ordinateur : ordinateurList) 
      mFragments.add(new OrdinateurFragment(ordinateur)); 
    } 

    @Override 
    public int getCount() { 
     return mFragments.size(); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragments.get(position); 
    } 

} 

public void createNotify(String texteNotification){ 
    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);   
    Notification notification = new Notification(R.drawable.ic_launcher, "Promo", System.currentTimeMillis()); 
    notification.flags = Notification.FLAG_ONGOING_EVENT; 
    Intent intent = new Intent(this, Main.class); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT), 0); 
    String titreNotification = "Promo Agora"; 
    notification.setLatestEventInfo(this, titreNotification, texteNotification, pendingIntent); 
    notification.vibrate = new long[] {0,200,100,200,100,200}; 
    notificationManager.notify(ID_NOTIFICATION, notification); 
} 
} 

回答

1

你可以通過調用setCurrentItem(int)改變一個ViewPager所示的項目。如果是最後一個項目,你可以撥打:

mViewPager.setCurrentItem(mViewPager.getCount() - 1);

+0

謝謝它的幫助 – user1820475

相關問題