Hello,

I have a query, When I try to use a customview in the listview, the
custom view donot display. All other views are displayed except the
custom view.
When I try to display the view like a normal layout (not in a list),
it displays fine.

Can anyone please help me to draw the customview in the list?

the main.xml file - layout that contains the custom view
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
    <CheckBox android:id="@+id/check2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="checkbox_2" />
             <app.customise.tab.CustomBackground
android:id="@android:id/list"
    android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

</LinearLayout>

the list.xml file - the list view file
<LinearLayout    >
       <FrameLayout>
       <ListView android:id="@android:id/android:list"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"/>

               </FrameLayout>
               </LinearLayout>

the CustomBackground.java - class that extends the View class and
draws a rounded rectangle

public class CustomBackground extends View{

        public CustomBackground(Context context, AttributeSet attrs) {
                super(context, attrs);
                // TODO Auto-generated constructor stub
                mRect = new Rect(40, 0, 310, 90);

        mDrawable = new GradientDrawable
(GradientDrawable.Orientation.TOP_BOTTOM,
                                         new int[] { 0xFFA5C3E9,
                                             0xFF548DD4 });
        mDrawable.setShape(GradientDrawable.RECTANGLE);
        mDrawable.setGradientRadius((float)(Math.sqrt(2) * 60));
        }

        private Rect    mRect;
    private GradientDrawable mDrawable;
        public CustomBackground(Context context) {
                super(context);
                // TODO Auto-generated constructor stub

                mRect = new Rect(40, 0, 310, 90);

        mDrawable = new GradientDrawable
(GradientDrawable.Orientation.TOP_BOTTOM,
                                         new int[] { 0xFFA5C3E9,
                                             0xFF548DD4 });
        mDrawable.setShape(GradientDrawable.RECTANGLE);
        mDrawable.setGradientRadius((float)(Math.sqrt(2) * 60));
                        }

        void setCornerRadii(GradientDrawable drawable, float r0,
            float r1, float r2, float r3) {
                                drawable.setCornerRadii(new float[] { r0, r0, 
r1, r1, r2, r2, r3,
r3 });
                        }

        @Override
        protected void onDraw(Canvas canvas) {
                // TODO Auto-generated method stub
                //super.onDraw(canvas);

                System.out.println("ON DRAW CALLED");

                 mDrawable.setBounds(mRect);

         float r = 10;
         canvas.translate(10, 10);
         mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
         setCornerRadii(mDrawable, r, r, r, r);
         mDrawable.draw(canvas);

                                invalidate();
        }


the DummyActivity.class extends ListActivity

public class DummyActivity extends ListActivity {
       @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * Display layout of main.xml with custom view.
         * Works fine. Displays one checkbox, two radio buttons and
one rounded rectangle
         * Class extends Activity
         */
       // setContentView(R.layout.main);
        /**
         * The above display in list.
         * Displays one checkbox, two radio buttons. Rounded rectangle
not displayed
         */
        setContentView(R.layout.list);
        mAdapter ma = new mAdapter(this);
        for(int i=0;i<5;i++)
        {
                ma.add(i);
        }
        this.setListAdapter(ma);

    }

    public class mAdapter extends BaseAdapter {

        private Context ctx;

        List<Integer>count = new ArrayList<Integer>();
        public mAdapter(Context c)
        {
                ctx=c;
        }
        public void add(int i)
        {
                count.add(i);
        }
                @Override
                public int getCount() {
                        // TODO Auto-generated method stub
                        return count.size();
                }

                @Override
                public Object getItem(int position) {
                        // TODO Auto-generated method stub
                        return count.get(position);
                }

                @Override
                public long getItemId(int position) {
                        // TODO Auto-generated method stub
                        return 0;
                }

                @Override
                public View getView(int position, View convertView, ViewGroup
parent) {
                        // TODO Auto-generated method stub
                        //Inflate the view of main.xml
                        LayoutInflater linf = 
(LayoutInflater)ctx.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
                        View v = linf.inflate( R.layout.main, parent, false);
                                           // Draw the customview in
new canvas for each list cell
                        Canvas c = new Canvas();
                        (v.findViewById(android.R.id.list)).draw(c);

                        Log.d("LAYOUT", "TIME "+ 
(v.findViewById(android.R.id.list)).getId
());


                        return v;
                }


    }

Can anyone help me to find what I am doing wrong?

Thanks.
Regards,
Purvi

--~--~---------~--~----~------------~-------~--~----~
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