2012-10-16 122 views
0
public class AndroidXMLParsingActivity extends Activity { 

    public int currentPage = 1; 
    public ListView lisView1; 
    static final String KEY_ITEM = "docdetails"; 
    static final String KEY_NAME = "heading"; 
    public Button btnNext; 
    public Button btnPre; 
    public static String url = "http://dev.taxmann.com/TaxmannService/TaxmannService.asmx/GetNotificationList"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // listView1 
     lisView1 = (ListView) findViewById(R.id.listView1); 

     // Next 
     btnNext = (Button) findViewById(R.id.btnNext); 
     // Perform action on click 
     btnNext.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       currentPage = currentPage + 1; 
       ShowData(); 
      } 
     }); 

     // Previous 
     btnPre = (Button) findViewById(R.id.btnPre); 
     // Perform action on click 
     btnPre.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       currentPage = currentPage - 1; 
       ShowData(); 
      } 
     }); 

     ShowData(); 
    } 

    public void ShowData() { 
     XMLParser parser = new XMLParser(); 
     String xml = parser.getXmlFromUrl(url); // getting XML 



      Document doc = parser.getDomElement(xml); 

     NodeList nl = doc.getElementsByTagName(KEY_ITEM); 

     int displayPerPage = 5; // Per Page 
     int TotalRows = nl.getLength(); 
     int indexRowStart = ((displayPerPage * currentPage) - displayPerPage); 
     int TotalPage = 0; 
     if (TotalRows <= displayPerPage) { 
      TotalPage = 1; 
     } else if ((TotalRows % displayPerPage) == 0) { 
      TotalPage = (TotalRows/displayPerPage); 
     } else { 
      TotalPage = (TotalRows/displayPerPage) + 1; // 7 
      TotalPage = (int) TotalPage; // 7 
     } 
     int indexRowEnd = displayPerPage * currentPage; // 5 
     if (indexRowEnd > TotalRows) { 
      indexRowEnd = TotalRows; 
     } 

     // Disabled Button Next 
     if (currentPage >= TotalPage) { 
      btnNext.setEnabled(false); 
     } else { 
      btnNext.setEnabled(true); 
     } 

     // Disabled Button Previos 
     if (currentPage <= 1) { 
      btnPre.setEnabled(false); 
     } else { 
      btnPre.setEnabled(true); 
     } 

     // Load Data from Index 
     int RowID = 1; 
     ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>(); 
     HashMap<String, String> map; 

     // RowID 
     if (currentPage > 1) { 
      RowID = (displayPerPage * (currentPage - 1)) + 1; 
     } 

     for (int i = indexRowStart; i < indexRowEnd; i++) { 
      Element e = (Element) nl.item(i); 
      // adding each child node to HashMap key => value 
      map = new HashMap<String, String>(); 
      map.put("RowID", String.valueOf(RowID)); 
      map.put(KEY_NAME, parser.getValue(e, KEY_NAME)); 

      // adding HashList to ArrayList 
      menuItems.add(map); 

      RowID = RowID + 1; 

     } 

     SimpleAdapter sAdap; 
     sAdap = new SimpleAdapter(AndroidXMLParsingActivity.this, menuItems, 
       R.layout.list_item, new String[] { "RowID", KEY_NAME }, 
       new int[] { R.id.ColRowID, R.id.ColName }); 
     lisView1.setAdapter(sAdap); 
    } 

} 

這是我的源代碼,我想設置ProgressBar這個活動是從另一個按鈕上的活動調用點擊我想設置數據加載時的ProgressBar ShowData()函數我們用於解析打印和分頁我試了很多但我不能把ProgressBar加載數據請告訴我如何實現它。如何設置進度條?

回答

0

試試這個代碼,它會運行

public class AndroidXMLParsingActivity extends Activity { 

    public int currentPage = 1; 
    public ListView lisView1; 
    static final String KEY_ITEM = "docdetails"; 
    static final String KEY_NAME = "heading"; 
    public Button btnNext; 
    public Button btnPre; 
    public static String url = "http://dev.taxmann.com/TaxmannService/TaxmannService.asmx/GetNotificationList"; 
    SimpleAdapter sAdap; 
    ProgressDialog progressDialog; 
    Activity mActivity; 
    ArrayList<HashMap<String, String>> menuItems; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mActivity = this; 
     // listView1 
     lisView1 = (ListView) findViewById(R.id.listView1); 

     // Next 
     btnNext = (Button) findViewById(R.id.btnNext); 
     // Perform action on click 
     btnNext.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       currentPage = currentPage + 1; 
       new backProcess().execute(); 
      } 
     }); 

     // Previous 
     btnPre = (Button) findViewById(R.id.btnPre); 
     // Perform action on click 
     btnPre.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       currentPage = currentPage - 1; 
       new backProcess().execute(); 
      } 
     }); 

     new backProcess().execute(); 
    } 

    public void ShowData() { 
     XMLParser parser = new XMLParser(); 
     String xml = parser.getXmlFromUrl(url); // getting XML 

     Document doc = parser.getDomElement(xml); 

     NodeList nl = doc.getElementsByTagName(KEY_ITEM); 

     int displayPerPage = 5; // Per Page 
     int TotalRows = nl.getLength(); 
     int indexRowStart = ((displayPerPage * currentPage) - displayPerPage); 
     int TotalPage = 0; 
     if (TotalRows <= displayPerPage) { 
      TotalPage = 1; 
     } else if ((TotalRows % displayPerPage) == 0) { 
      TotalPage = (TotalRows/displayPerPage); 
     } else { 
      TotalPage = (TotalRows/displayPerPage) + 1; // 7 
      TotalPage = (int) TotalPage; // 7 
     } 
     int indexRowEnd = displayPerPage * currentPage; // 5 
     if (indexRowEnd > TotalRows) { 
      indexRowEnd = TotalRows; 
     } 

     // Disabled Button Next 
     if (currentPage >= TotalPage) { 
      btnNext.setEnabled(false); 
     } else { 
      btnNext.setEnabled(true); 
     } 

     // Disabled Button Previos 
     if (currentPage <= 1) { 
      btnPre.setEnabled(false); 
     } else { 
      btnPre.setEnabled(true); 
     } 

     // Load Data from Index 
     int RowID = 1; 
     menuItems = new ArrayList<HashMap<String, String>>(); 
     HashMap<String, String> map; 

     // RowID 
     if (currentPage > 1) { 
      RowID = (displayPerPage * (currentPage - 1)) + 1; 
     } 

     for (int i = indexRowStart; i < indexRowEnd; i++) { 
      Element e = (Element) nl.item(i); 
      // adding each child node to HashMap key => value 
      map = new HashMap<String, String>(); 
      map.put("RowID", String.valueOf(RowID)); 
      map.put(KEY_NAME, parser.getValue(e, KEY_NAME)); 

      // adding HashList to ArrayList 
      menuItems.add(map); 

      RowID = RowID + 1; 

     } 

    } 

    public class backProcess extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected void onPostExecute(Void result) { 
      if (progressDialog != null) 
       progressDialog.dismiss(); 
      sAdap = new SimpleAdapter(AndroidXMLParsingActivity.this, 
        menuItems, R.layout.list_item, new String[] { "RowID", 
          KEY_NAME }, 
        new int[] { R.id.ColRowID, R.id.ColName }); 
      lisView1.setAdapter(sAdap); 
      super.onPostExecute(result); 
     } 

     @Override 
     protected void onPreExecute() { 
      progressDialog = ProgressDialog.show(mActivity, "Wait", 
        "Loading..."); 
      super.onPreExecute(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      ShowData(); 
      return null; 
     } 

    } 

} 
-1

幾個很好的教程使用異步任務加載數據

private class Data extends AsyncTask<Object, Integer, Object> { 

     @Override 
     protected void onPreExecute() { 

      ProgressDialog progress = ProgressDialog.show(Activity.this, "", 
        "Loading..."); 

      super.onPreExecute(); 
     } 

     @Override 
     protected Object doInBackground(Object... params) { 
      //do hard work here 
          ShowData(); 
           return null; 
     } 

     @Override 
     protected void onProgressUpdate(Integer... values) { 
      progress.getProgress(); 

     } 

     @Override 
     protected void onPostExecute(Object result) { 

      progressBar.dismiss(); 


      super.onPostExecute(result); 
     } 
    } 

和的onclick方法

new Data().execute(). 
+0

onclick方法在我的另一個類中,我將如何調用它? – user1748932

+0

這個子類只能在你要調用的那個類中調用,並且在onclick方法類中調用這個「new Data()。execute();」 –

+0

無法做到請告訴我你的電子郵件ID我會發送你的源代碼,以便你可以看到並實施它我試了最後2天無法做到 – user1748932

-1

製作異步類作爲公共靜態,然後你可以從任何地方訪問它。

private class Data extends AsyncTask<Object, Integer, Object> { 

    @Override 
    protected void onPreExecute() { 

     ProgressDialog progress = ProgressDialog.show(Activity.this, "", 
       "Loading..."); 

     super.onPreExecute(); 
    } 

    @Override 
    protected Object doInBackground(Object... params) { 
     //do hard work here 
         ShowData(); 
          return null; 
    } 

    @Override 
    protected void onProgressUpdate(Integer... values) { 
     progress.getProgress(); 

    } 

    @Override 
    protected void onPostExecute(Object result) { 

     progressBar.dismiss(); 


     super.onPostExecute(result); 
    } 
} 
+0

同樣的事情,我做了它顯示進度條,然後應用程序變得接近 – user1748932

+0

當我使用下一個,上一個和多個地方的新數據().execute(); – user1748932

+0

你可以告訴我你的電子郵件ID顯示,我可以發送你的源代碼,你可以檢查它 – user1748932