It's quite a bit of code, but one thing's missing that you have to do:

In your onCreate, you're not calling setContentView(...). You have to
do this to show at least something :-)

On Oct 3, 4:39 pm, vorcigernix <[email protected]> wrote:
> 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);
>         };
>     };
>
>
>
> }- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
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