递增INT创建一个HashMap [英] Incrementing int to create a HashMap

查看:95
本文介绍了递增INT创建一个HashMap的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是用JSON的帮助下获取数据更新我的列表视图,但是我希望通过增加一个计数器,这意味着做每5秒本;计数器时> = 5它得到后则数据计数器设置为0,因此,当它是5它将再次刷新

获取数据的作品完美,没有if语句来检查计数器值。

我不知道我应该在哪里输入if语句得到的结果时,如果句子是真实的。

下面是我的整个类;

 公共类AllProductsActivity扩展ListActivity {
 INT延迟= 5000; // 5秒的延迟。
 INT周期= 1000; //重复每秒。
 INT counterr = 0;
 //进度对话框
 私人ProgressDialog pDialog;
 公共布尔刷新= FALSE;
 //创建JSON解析器对象
 JSONParser jParser =新JSONParser(); ArrayList的<&HashMap的LT;字符串,字符串>>产品列表; // URL获得所有产品清单
私人静态字符串url_all_products =HTTP://XXXXXXX.php// JSON节点名称
私有静态最后弦乐TAG_SUCCESS =成功;
私有静态最后弦乐TAG_PRODUCTS =产品;
私有静态最后弦乐TAG_PID =PID;
私有静态最后弦乐TAG_NAME =名;
私有静态最后弦乐TAG_PRICE =价格;
私有静态最后弦乐TAG_DESCRIPTION =说明;
//产品JSONArray
JSONArray产品= NULL;@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.all_products);
    // counterr = 100;
    定时器定时器=新的Timer();    timer.scheduleAtFixedRate(新的TimerTask()
    {
        公共无效的run()
        {
           //你的code            counterr ++;
            的System.out.println(COUN+ counterr);
            的System.out.println(刷新?+刷新);            如果(counterr> = 3)
                刷新= TRUE;
        }
    },延迟期);    //为哈希映射的ListView
    产品列表=新的ArrayList<&HashMap的LT;字符串,字符串>>();    //装载产品在后台线程
    新LoadAllProducts()执行();    //获取列表视图
    ListView控件LV = getListView();    //在选课单品
    //启动编辑产品屏幕
    lv.setOnItemClickListener(新OnItemClickListener(){        @覆盖
        公共无效onItemClick(适配器视图<>母公司,观景,
                INT位置,长的id){
            //从选定的ListItem得到的值
            字符串的pid =((的TextView)view.findViewById(R.id.pid))的getText()。
                    的ToString();            //开始新意图
            在意向=新意图(getApplicationContext()
                    EditProductActivity.class);
            //发送到PID下一个活动
            in.putExtra(TAG_PID,PID);            //开始新的活动,期待一些回响应
            startActivityForResult(在100);
        }
    });}//从编辑产品的活动响应
@覆盖
保护无效的onActivityResult(INT申请code,INT结果code,意图数据){
    super.onActivityResult(要求code,结果code,数据);
    //如果结果code 100
    如果(结果code == 100){
        //如果结果code 100接收
        //意味着用户编辑/删除产品
        //重新载入该画面
        意向意图= getIntent();
        完();
        startActivity(意向);
    }}/ **
 *背景异步任务以通过HTTP请求负载的所有产品
 * * /
类LoadAllProducts扩展的AsyncTask<字符串,字符串,字符串> {
    / **
     *启动后台线程显示进度对话框之前
     * * /
    @覆盖
    在preExecute保护无效(){        super.on preExecute();
        pDialog =新ProgressDialog(AllProductsActivity.this);
        pDialog.setMessage(加载产品请稍候......);
        pDialog.setIndeterminate(假);
        pDialog.setCancelable(假);
        pDialog.show();    }    / **
     *让所有的产品网址
     * * /
    保护字符串doInBackground(字符串参数... args){
            //大厦参数
        清单<&的NameValuePair GT; PARAMS =新的ArrayList<&的NameValuePair GT;();
        // URL从获取JSON字符串
        JSONObject的JSON = jParser.makeHtt prequest(url_all_products,GET,则params);        //检查JSON效应初探日志的猫
        Log.d(所有产品,json.toString());        尝试{
            //检查成功TAG            INT成功= json.getInt(TAG_SUCCESS);
            的System.out.println(成功);            如果(成功== 1){//&放大器;&放大器; counterr> = 5){                发现//产品
                //获取产品阵列
                产品= json.getJSONArray(TAG_PRODUCTS);                //产品通过所有循环
                的for(int i = 0; I< products.length();我++){
                    JSONObject的C = products.getJSONObject(I)                    //存储在变量中的每个JSON项目
                    字符串ID = c.getString(TAG_PID);
                    字符串名称= c.getString(TAG_NAME);
                    串价格= c.getString(TAG_PRICE);
                    字符串描述= c.getString(TAG_DESCRIPTION);
                    //如果(counterr> = 5){
                    //创建新的HashMap
                    HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();
                    //将每个子节点的HashMap键=>值
                    map.put(TAG_PID,身份证);
                    map.put(TAG_NAME,名);
                    map.put(TAG_PRICE,+价格);
                    map.put(TAG_DESCRIPTION,说明);
                    //添加HashList到ArrayList的
                    productsList.add(地图);
                    counterr = 0;
                    刷新= FALSE;
                    }
                        }                // counterr = 0;
    //}          其他{
                //没有发现产品
                //启动添加新产品活动
                意图I =新意图(getApplicationContext()
                        NewProductActivity.class);
                //关闭所有previous活动
                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(ⅰ);
            }
        }赶上(JSONException E){
            e.printStackTrace();
        }        返回null;
    }
    / **
     *在完成后台任务之后辞退进度对话框
     * ** /
    保护无效onPostExecute(字符串FILE_URL){
        //让所有的产品后,关闭该对话框
        pDialog.dismiss();
        //从后台线程更新界面
        runOnUiThread(新的Runnable(){
            公共无效的run(){
                / **
                 *更新解析JSON数据到ListView控件
                 * * /
                ListAdapter适配器=新SimpleAdapter(
                        AllProductsActivity.this,产品列表,
                        R.layout.list_item,新的String [] {TAG_PID,
                                TAG_NAME,TAG_PRICE,TAG_DESCRIPTION},
                        新的INT [] {R.id.pid,R.id.name,R.id.price,R.id.description});
                //更新列表视图
                setListAdapter(适配器);
            }
        });    }}}


解决方案

通过实现这一点;公共无效的run()内{

 如果(counterr> = 5){
    counterr = 0;
        JSON = jParser.makeHtt prequest(url_all_products,GET,则params);
        意图I =新意图(getApplicationContext(),AllProductsActivity.class);
        startActivity(ⅰ);
  }

做的伎俩!

I'm just updating my list view by getting data with the help of JSON, however I want to do this every 5 seconds, by incrementing a counter, meaning; when the counter>=5 after it gets data then set the counter to 0, so it will refresh again when it is 5.

Getting the data works perfectly, without the if sentence that checks for the counter value.

I'm not sure where I should type the if statement to get the results when the if sentence is true.

Here is my entire class;

public class AllProductsActivity extends ListActivity {
 int delay = 5000; // delay for 5 sec.
 int period = 1000; // repeat every sec.
 int counterr=0;
 // Progress Dialog
 private ProgressDialog pDialog;
 public boolean refresh=false;
 // Creating JSON Parser object
 JSONParser jParser = new JSONParser();

 ArrayList<HashMap<String, String>> productsList;

 // url to get all products list
private static String url_all_products = "http://XXXXXXX.php";

// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_PRODUCTS = "products";
private static final String TAG_PID = "pid";
private static final String TAG_NAME = "name";
private static final String TAG_PRICE = "price";
private static final String TAG_DESCRIPTION = "description";
// products JSONArray
JSONArray products = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.all_products);
    //counterr=100;
    Timer timer = new Timer();

    timer.scheduleAtFixedRate(new TimerTask()
    {
        public void run()
        {
           // Your code

            counterr++;
            System.out.println("COun "+counterr);
            System.out.println("Refresh?  "+refresh);

            if(counterr>=3)
                refresh=true;
        }
    }, delay, period);

    // Hashmap for ListView
    productsList = new ArrayList<HashMap<String, String>>();

    // Loading products in Background Thread
    new LoadAllProducts().execute();

    // Get listview
    ListView lv = getListView();

    // on seleting single product
    // launching Edit Product Screen
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // getting values from selected ListItem
            String pid = ((TextView) view.findViewById(R.id.pid)).getText()
                    .toString();

            // Starting new intent
            Intent in = new Intent(getApplicationContext(),
                    EditProductActivity.class);
            // sending pid to next activity
            in.putExtra(TAG_PID, pid);

            // starting new activity and expecting some response back
            startActivityForResult(in, 100);
        }
    });

}

// Response from Edit Product Activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // if result code 100
    if (resultCode == 100) {
        // if result code 100 is received 
        // means user edited/deleted product
        // reload this screen again
        Intent intent = getIntent();
        finish();
        startActivity(intent);
    }

}

/**
 * Background Async Task to Load all product by making HTTP Request
 * */
class LoadAllProducts extends AsyncTask<String, String, String> {
    /**
     * Before starting background thread Show Progress Dialog
     * */
    @Override
    protected void onPreExecute() {

        super.onPreExecute();
        pDialog = new ProgressDialog(AllProductsActivity.this);
        pDialog.setMessage("Loading products. Please wait...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();

    }

    /**
     * getting All products from url
     * */
    protected String doInBackground(String... args) {
            // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        // getting JSON string from URL
        JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params);

        // Check your log cat for JSON reponse
        Log.d("All Products: ", json.toString());

        try {
            // Checking for SUCCESS TAG

            int success = json.getInt(TAG_SUCCESS);
            System.out.println(success);

            if (success == 1){// && counterr>=5) {

                // products found
                // Getting Array of Products
                products = json.getJSONArray(TAG_PRODUCTS);

                // looping through All Products
                for (int i = 0; i < products.length(); i++) {
                    JSONObject c = products.getJSONObject(i);

                    // Storing each json item in variable
                    String id = c.getString(TAG_PID);
                    String name = c.getString(TAG_NAME);
                    String price = c.getString(TAG_PRICE);
                    String description = c.getString(TAG_DESCRIPTION);


                    //if(counterr>=5){
                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();
                    // adding each child node to HashMap key => value
                    map.put(TAG_PID, id);
                    map.put(TAG_NAME, name);
                    map.put(TAG_PRICE, "" + price);
                    map.put(TAG_DESCRIPTION, description);
                    // adding HashList to ArrayList
                    productsList.add(map);
                    counterr=0;
                    refresh=false;
                    }
                        }

                //counterr=0;
    // }

          else {
                // no products found
                // Launch Add New product Activity
                Intent i = new Intent(getApplicationContext(),
                        NewProductActivity.class);
                // Closing all previous activities
                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(i);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }


    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(String file_url) {
        // dismiss the dialog after getting all products
        pDialog.dismiss();
        // updating UI from Background Thread
        runOnUiThread(new Runnable() {
            public void run() {
                /**
                 * Updating parsed JSON data into ListView
                 * */
                ListAdapter adapter = new SimpleAdapter(
                        AllProductsActivity.this, productsList,
                        R.layout.list_item, new String[] { TAG_PID,
                                TAG_NAME, TAG_PRICE, TAG_DESCRIPTION},
                        new int[] { R.id.pid, R.id.name, R.id.price, R.id.description });
                // updating listview
                setListAdapter(adapter);
            }
        });

    }

}

}

解决方案

By implementing this; inside the public void run(){

  if(counterr>=5){
    counterr=0;
        json = jParser.makeHttpRequest(url_all_products, "GET", params);
        Intent i = new Intent(getApplicationContext(), AllProductsActivity.class);
        startActivity(i);
  }

Does the trick!

这篇关于递增INT创建一个HashMap的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆