Hello,

I didn't found clear answer for why my code does not work. I assume it
is because I am trying to update textview from runnable. Anybody know
some workaround? Code isn't clean off course, I am happy to get that
working so far as I am totally new in java.

public class MainScreenActivity extends ListActivity {
        private Handler mHandler;
        private String url = "http://sql08.globus.cz/turnovers/
turnoversuma.ashx";
        static JSONArray valArray2;
        public static final String DATE_FORMAT_NOW = "HH:mm:ss";
        TextView stext;

        private static class EfficientAdapter extends BaseAdapter {
        private LayoutInflater mInflater;
        private Bitmap mIcon1;
        private Bitmap mIcon2;

        public EfficientAdapter(Context context) {
                try{
            // Cache the LayoutInflate to avoid asking for a new one
each time.
            mInflater = LayoutInflater.from(context);

            // Icons bound to the rows.
            mIcon1 = BitmapFactory.decodeResource(context.getResources
(), R.drawable.green);
            mIcon2 = BitmapFactory.decodeResource(context.getResources
(), R.drawable.yellow);
                }
            catch (Exception e) {
                        Log.e("ERROR", "ERROR IN CODE:"+e.toString());
                }


        }

        /**
         * The number of items in the list is determined by the number
of speeches
         * in our array.
         *
         * @see android.widget.ListAdapter#getCount()
         */
        public int getCount() {

            try {
                                return valArray2.length();
                        } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                                return 0;
                        }
        }

        /**
         * Since the data comes from an array, just returning the
index is
         * sufficent to get at the data. If we were using a more
complex data
         * structure, we would return whatever object represents one
row in the
         * list.
         *
         * @see android.widget.ListAdapter#getItem(int)
         */
        public JSONArray getItem(int position) {
                JSONArray retobj = null;
                try {
                                retobj = valArray2.getJSONArray(position);
                        } catch (JSONException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        return retobj;
        }

        /**
         * Use the array index as a unique id.
         *
         * @see android.widget.ListAdapter#getItemId(int)
         */
        public long getItemId(int position) {
            return position;
        }

        /**
         * Make a view to hold each row.
         *
         * @see android.widget.ListAdapter#getView(int,
android.view.View,
         *      android.view.ViewGroup)
         */
        public View getView(int position, View convertView, ViewGroup
parent) {
            // A ViewHolder keeps references to children views to
avoid unneccessary calls
            // to findViewById() on each row.
            ViewHolder holder;

            // When convertView is not null, we can reuse it directly,
there is no need
            // to reinflate it. We only inflate a new View when the
convertView supplied
            // by ListView is null.
            holder = new ViewHolder();

            try {
                                if (convertView == null) {
                                    convertView = 
mInflater.inflate(R.layout.list_item_icon_text,
null);

                                    // Creates a ViewHolder and store 
references to the two
children views
                                    // we want to bind data to.

                                    holder.text = (TextView) 
convertView.findViewById(R.id.text);
                                    holder.text2 = (TextView) 
convertView.findViewById
(R.id.text2);
                                    holder.icon = (ImageView) 
convertView.findViewById(R.id.icon);

                                    convertView.setTag(holder);
                                } else {
                                    // Get the ViewHolder back to get fast 
access to the TextView
                                    // and the ImageView.
                                    holder = (ViewHolder) convertView.getTag();
                                }
                        } catch (Exception e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                        }

            // Bind the data efficiently with the holder.

            try {
                String rowString = "[" + valArray2.getString(position) +
"]";
                JSONArray rowArr = new JSONArray(rowString);
                JSONObject rowobj = rowArr.getJSONObject(0);


                holder.text.setText(rowobj.getString("BranchName"));
                                
holder.text2.setText(rowobj.getString("BranchValue"));
                                holder.icon.setImageBitmap((position & 1) == 1 
? mIcon1 : mIcon2);
                        } catch (JSONException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }

                        notifyDataSetChanged();

            return convertView;

        }

        static class ViewHolder {
            TextView text;
            TextView text2;
            ImageView icon;
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        stext = (TextView)findViewById(R.id.statustext);
        mHandler = new Handler();
        checkUpdate.start();

    }

    private Runnable showUpdate = new Runnable(){
         public void run(){
                Calendar cal = Calendar.getInstance();
            SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);

                 try {
                                                        setListAdapter(new 
EfficientAdapter(MainScreenActivity.this));
                                                        
stext.setText(sdf.format(cal.getTime()).toString()+ " ok");

                                                } catch (Exception e) {
                                                        
stext.setText(sdf.format(cal.getTime()).toString()+ " chyba");
                                                        e.printStackTrace();


                                                }



                }
     };
private static String convertStreamToString(InputStream is) {
        /*
         * To convert the InputStream to String we use the
BufferedReader.readLine()
         * method. We iterate until the BufferedReader return null
which means
         * there's no more data to read. Each line will appended to a
StringBuilder
         * and returned as String.
         */
        BufferedReader reader = new BufferedReader(new
InputStreamReader(is));
        StringBuilder sb = new StringBuilder();

        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
    }



    private Thread checkUpdate = new Thread() {
        public void run() {

            HttpClient httpclient = new DefaultHttpClient();


                        // Prepare a request object
            HttpGet httpget = new HttpGet(url);

            // Execute the request
            HttpResponse response;
            try {
                response = httpclient.execute(httpget);
                // Examine the response status

                // Get hold of the response entity
                HttpEntity entity = response.getEntity();
                // If the response does not enclose an entity, there
is no need
                // to worry about connection release

                if (entity != null) {

                    // A Simple JSON Response Read
                    InputStream instream = entity.getContent();
                    String result= convertStreamToString(instream);

                    valArray2 = new JSONArray(result);

                    // Closing the input stream will trigger
connection release
                    instream.close();


                }


            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            mHandler.postDelayed(checkUpdate, 100000);

            mHandler.post(showUpdate);
        };
    };



}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to