Hi,

I tried to run your code to see what you mean by alignment is messed up, but
the code for Icon class is missing.
Can you give more details on what exactly is going wrong?

Thanks,
Megha

On Sun, Mar 23, 2008 at 8:17 PM, Ken <[EMAIL PROTECTED]> wrote:

>
> Hi there,
>
> Please take a look at:
> http://kombadil.willflow.com/misbehaving_grid/
>
> The grid starts out OK, but if you move around, the alignment is
> messed up. Any suggestions?
>
> Thanks!
>
> Ken
>
> P.S. I've attached the code below:
>
> ----- main.xml -----
> <?xml version="1.0" encoding="utf-8"?>
>
> <GridView xmlns:android="http://schemas.android.com/apk/res/android";
>        android:id="@+id/launch_grid"
>        android:layout_width="fill_parent"
>        android:layout_height="fill_parent"
>    android:padding="10dip"
>    android:verticalSpacing="10"
>    android:horizontalSpacing="10"
>    android:numColumns="auto_fit"
>    android:columnWidth="60"
>    android:stretchMode="columnWidth"
>
>    android:gravity="center"
> />
>
> ----- ThreadTest.java -----
> package com.test.threadtest;
>
> import java.io.BufferedInputStream;
> import java.io.InputStream;
> import java.net.HttpURLConnection;
> import java.net.URL;
> import java.util.ArrayList;
> import java.util.List;
>
> import android.app.Activity;
> import android.content.Context;
> import android.content.Intent;
> import android.graphics.Bitmap;
> import android.graphics.BitmapFactory;
> import android.os.Bundle;
> import android.os.Handler;
> import android.util.Log;
> import android.view.View;
> import android.view.ViewGroup;
> import android.widget.AdapterView;
> import android.widget.BaseAdapter;
> import android.widget.GridView;
> import android.widget.ImageView;
> import android.widget.LinearLayout;
> import android.widget.TextView;
> import android.widget.AdapterView.OnItemClickListener;
>
> public class ThreadTest extends Activity {
>        private List<Icon> icons;
>        private GridView launchView;
>        private IconListAdapter iconListAdapter;
>
>        @Override
>    public void onCreate(Bundle icicle) {
>        super.onCreate(icicle);
>        setContentView(R.layout.main);
>        final Handler mHandler = new Handler();
>        icons = new ArrayList<Icon>();
>
>        Thread t = new Thread() {
>                        public void run() {
>                                perform();
>                                mHandler.post(mUpdate);
>                        }
>                };
>
>                t.start();
>    }
>
>    protected void perform() {
>        ServerHandler serverHandler = new ServerHandler();
>        icons = serverHandler.getIcons();
>        iconListAdapter = new IconListAdapter(this, icons);
>
>        }
>
>    final Runnable mUpdate = new Runnable() {
>        public void run() {
>                launchView = (GridView) findViewById(R.id.launch_grid);
>                launchView.setAdapter(iconListAdapter);
>                launchView.setOnItemClickListener(new OnItemClickListener()
> {
>                        public void onItemClick(AdapterView parent, View v,
> int
> position, long id) {
>                                Intent i = new Intent(ThreadTest.this,
> ThreadTest.class);
>                                startActivity(i);
>                        }
>                });
>
>
>        }
>    };
>
>    public class IconListAdapter extends BaseAdapter {
>        private Context ctx;
>        private List<Icon> icons;
>
>                public IconListAdapter(Context ctx, List<Icon> icons) {
>                        this.ctx = ctx;
>                        this.icons = icons;
>        }
>
>        public View getView(int position, View convertView, ViewGroup
> parent) {
>                Icon app = icons.get(position);
>                ApplicationView av = new ApplicationView(ctx, app.name,
> app.iconUrl);
>                return av;
>        }
>
>        public final int getCount() {
>            return icons.size();
>        }
>
>        public final Object getItem(int position) {
>            return icons.get(position);
>        }
>
>        public final long getItemId(int position) {
>            return position;
>        }
>    }
>
>    public static Bitmap getBitmap(String urlString) {
>                Bitmap bm = null;
>
>                if (urlString.startsWith("http")) {
>                        try {
>                                URL url = new URL(urlString);
>                                HttpURLConnection conn =
> (HttpURLConnection)
> url.openConnection();
>                                conn.connect();
>                                InputStream is = conn.getInputStream();
>                                BufferedInputStream bis = new
> BufferedInputStream(is);
>                                bm = BitmapFactory.decodeStream(bis);
>                                conn.disconnect();
>                                is.close();
>                                bis.close();
>                        } catch (Exception e) {
>                                Log.e("error", e.toString());
>                                bm = null;
>                        }
>                }
>
>                return bm;
>        }
>
>        public class ApplicationView extends LinearLayout {
>                private TextView name;
>                private ImageView icon;
>
>                public ApplicationView(Context context, String name, String
> urlString) {
>                        super(context);
>                        this.setOrientation(VERTICAL);
>
>                        this.icon = new ImageView(context);
>                        addView(icon, new
> LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
> LayoutParams.WRAP_CONTENT));
>                        this.icon.setImageBitmap(getBitmap(urlString));
>
>                this.name = new TextView(context);
>                        addView(this.name, new
> LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
> LayoutParams.WRAP_CONTENT));
>                        this.name.setText(name);
>                }
>        }
> }
>
>
> ----- ServerHandler.java -----
> package com.test.threadtest;
>
> import java.util.ArrayList;
> import java.util.List;
>
> import android.util.Log;
>
> public class ServerHandler {
>        public List<Icon> getIcons() {
>                final List<Icon> icons = new ArrayList<Icon>();
>
>                String name = "icon";
>
>                for(int i=0; i<10; i++) {
>                        Icon icon = new Icon();
>                        icon.name = name;
>                        name += "xxx";
>                        icon.iconUrl = "
> http://code.google.com/android/images/
> logo_android.gif <http://code.google.com/android/images/logo_android.gif>
> ";
>                        icons.add(icon);
>                }
>
>                // Sleep code
>                // Comment this section out and the code would work.
>                // In reality it is a piece of code that talks to a server.
> //              try {
> //                      Log.e("test", "enter");
> //                      Thread.sleep(1000);
> //                      Log.e("test", "leave");
> //              } catch (InterruptedException e) {
> //                      e.printStackTrace();
> //              }
>
>                return icons;
>        }
> }
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to