Custom View donot Draw in ListView

Put problem concerning Views, Layouts and other XML-Resources (like AndroidManifest) here.

Custom View donot Draw in ListView

Postby purvi » Mon Oct 19, 2009 2:59 pm

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
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3.  
  4. <LinearLayout
  5.  
  6.    >
  7.  
  8. <TextView
  9.  
  10.    android:layout_width="fill_parent"
  11.  
  12.    android:layout_height="wrap_content"
  13.  
  14.    android:text="@string/hello"
  15.  
  16.    />
  17.  
  18.     <CheckBox android:id="@+id/check2"
  19.  
  20.            android:layout_width="wrap_content"
  21.  
  22.            android:layout_height="wrap_content"
  23.  
  24.            android:text="checkbox_2" />
  25.  
  26.              <app.customise.tab.CustomBackground
  27.  
  28. android:id="@android:id/list"
  29.  
  30.    android:layout_width="wrap_content"
  31.  
  32.                android:layout_height="wrap_content"/>
  33.  
  34.  
  35.  
  36.  
  37.  
  38. </LinearLayout>
  39.  
  40.  
Parsed in 0.002 seconds, using GeSHi 1.0.8.4


the list.xml file - the list view file
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1.  
  2. <LinearLayout    >
  3.  
  4.        <FrameLayout>
  5.  
  6.        <ListView android:id="@android:id/android:list"
  7.  
  8.               android:layout_width="fill_parent"
  9.  
  10.               android:layout_height="fill_parent"/>
  11.  
  12.  
  13.  
  14.  
  15.  
  16.                </FrameLayout>
  17.  
  18.                </LinearLayout>
  19.  
  20.  
  21.  
  22.  
Parsed in 0.001 seconds, using GeSHi 1.0.8.4

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

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. public class CustomBackground extends View{
  3.  
  4.  
  5.  
  6.  
  7.  
  8.         public CustomBackground(Context context, AttributeSet attrs) {
  9.  
  10.                 super(context, attrs);
  11.  
  12.                 // TODO Auto-generated constructor stub
  13.  
  14.                 mRect = new Rect(40, 0, 310, 90);
  15.  
  16.  
  17.  
  18.  
  19.  
  20.         mDrawable = new GradientDrawable
  21.  
  22. (GradientDrawable.Orientation.TOP_BOTTOM,
  23.  
  24.                                          new int[] { 0xFFA5C3E9,
  25.  
  26.                                              0xFF548DD4 });
  27.  
  28.         mDrawable.setShape(GradientDrawable.RECTANGLE);
  29.  
  30.         mDrawable.setGradientRadius((float)(Math.sqrt(2) * 60));
  31.  
  32.         }
  33.  
  34.  
  35.  
  36.  
  37.  
  38.         private Rect    mRect;
  39.  
  40.     private GradientDrawable mDrawable;
  41.  
  42.         public CustomBackground(Context context) {
  43.  
  44.                 super(context);
  45.  
  46.                 // TODO Auto-generated constructor stub
  47.  
  48.  
  49.  
  50.  
  51.  
  52.                 mRect = new Rect(40, 0, 310, 90);
  53.  
  54.  
  55.  
  56.  
  57.  
  58.         mDrawable = new GradientDrawable
  59.  
  60. (GradientDrawable.Orientation.TOP_BOTTOM,
  61.  
  62.                                          new int[] { 0xFFA5C3E9,
  63.  
  64.                                              0xFF548DD4 });
  65.  
  66.         mDrawable.setShape(GradientDrawable.RECTANGLE);
  67.  
  68.         mDrawable.setGradientRadius((float)(Math.sqrt(2) * 60));
  69.  
  70.                         }
  71.  
  72.  
  73.  
  74.  
  75.  
  76.         void setCornerRadii(GradientDrawable drawable, float r0,
  77.  
  78.             float r1, float r2, float r3) {
  79.  
  80.                                 drawable.setCornerRadii(new float[] { r0, r0, r1, r1, r2, r2, r3,
  81.  
  82. r3 });
  83.  
  84.                         }
  85.  
  86.  
  87.  
  88.  
  89.  
  90.         @Override
  91.  
  92.         protected void onDraw(Canvas canvas) {
  93.  
  94.                 // TODO Auto-generated method stub
  95.  
  96.                 //super.onDraw(canvas);
  97.  
  98.  
  99.  
  100.  
  101.  
  102.                 System.out.println("ON DRAW CALLED");
  103.  
  104.  
  105.  
  106.  
  107.  
  108.                  mDrawable.setBounds(mRect);
  109.  
  110.  
  111.  
  112.  
  113.  
  114.          float r = 10;
  115.  
  116.          canvas.translate(10, 10);
  117.  
  118.          mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
  119.  
  120.          setCornerRadii(mDrawable, r, r, r, r);
  121.  
  122.          mDrawable.draw(canvas);
  123.  
  124.  
  125.  
  126.  
  127.  
  128.                                 invalidate();
  129.  
  130.         }
  131.  
  132.  
Parsed in 0.037 seconds, using GeSHi 1.0.8.4


the DummyActivity.class extends ListActivity

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. public class DummyActivity extends ListActivity {
  3.  
  4.        @Override
  5.  
  6.     public void onCreate(Bundle savedInstanceState) {
  7.  
  8.         super.onCreate(savedInstanceState);
  9.  
  10.         /**
  11.  
  12.          * Display layout of main.xml with custom view.
  13.  
  14.          * Works fine. Displays one checkbox, two radio buttons and
  15.  
  16. one rounded rectangle
  17.  
  18.          * Class extends Activity
  19.  
  20.          */
  21.  
  22.        // setContentView(R.layout.main);
  23.  
  24.         /**
  25.  
  26.          * The above display in list.
  27.  
  28.          * Displays one checkbox, two radio buttons. Rounded rectangle
  29.  
  30. not displayed
  31.  
  32.          */
  33.  
  34.         setContentView(R.layout.list);
  35.  
  36.         mAdapter ma = new mAdapter(this);
  37.  
  38.         for(int i=0;i<5;i++)
  39.  
  40.         {
  41.  
  42.                 ma.add(i);
  43.  
  44.         }
  45.  
  46.         this.setListAdapter(ma);
  47.  
  48.  
  49.  
  50.  
  51.  
  52.     }
  53.  
  54.  
  55.  
  56.  
  57.  
  58.     public class mAdapter extends BaseAdapter {
  59.  
  60.  
  61.  
  62.  
  63.  
  64.         private Context ctx;
  65.  
  66.  
  67.  
  68.  
  69.  
  70.         List<Integer>count = new ArrayList<Integer>();
  71.  
  72.         public mAdapter(Context c)
  73.  
  74.         {
  75.  
  76.                 ctx=c;
  77.  
  78.         }
  79.  
  80.         public void add(int i)
  81.  
  82.         {
  83.  
  84.                 count.add(i);
  85.  
  86.         }
  87.  
  88.                 @Override
  89.  
  90.                 public int getCount() {
  91.  
  92.                         // TODO Auto-generated method stub
  93.  
  94.                         return count.size();
  95.  
  96.                 }
  97.  
  98.  
  99.  
  100.  
  101.  
  102.                 @Override
  103.  
  104.                 public Object getItem(int position) {
  105.  
  106.                         // TODO Auto-generated method stub
  107.  
  108.                         return count.get(position);
  109.  
  110.                 }
  111.  
  112.  
  113.  
  114.  
  115.  
  116.                 @Override
  117.  
  118.                 public long getItemId(int position) {
  119.  
  120.                         // TODO Auto-generated method stub
  121.  
  122.                         return 0;
  123.  
  124.                 }
  125.  
  126.  
  127.  
  128.  
  129.  
  130.                 @Override
  131.  
  132.                 public View getView(int position, View convertView, ViewGroup
  133.  
  134. parent) {
  135.  
  136.                         // TODO Auto-generated method stub
  137.  
  138.                         //Inflate the view of main.xml
  139.  
  140.                         LayoutInflater linf = (LayoutInflater)ctx.getSystemService
  141.  
  142. (Context.LAYOUT_INFLATER_SERVICE);
  143.  
  144.                         View v = linf.inflate( R.layout.main, parent, false);
  145.  
  146.                                            // Draw the customview in
  147.  
  148. new canvas for each list cell
  149.  
  150.                         Canvas c = new Canvas();
  151.  
  152.                         (v.findViewById(android.R.id.list)).draw(c);
  153.  
  154.  
  155.  
  156.  
  157.  
  158.                         Log.d("LAYOUT", "TIME "+ (v.findViewById(android.R.id.list)).getId
  159.  
  160. ());
  161.  
  162.  
  163.  
  164.  
  165.  
  166.                         return v;
  167.  
  168.                 }
  169.  
  170.  
  171.  
  172.  
  173.  
  174.     }
  175.  
  176.  
  177.  
  178.  
Parsed in 0.040 seconds, using GeSHi 1.0.8.4

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


Thanks.
Regards,
Purvi
purvi
Junior Developer
Junior Developer
 
Posts: 10
Joined: Mon Oct 19, 2009 2:52 pm

Top

Return to View, Layout & Resource Problems

Who is online

Users browsing this forum: No registered users and 3 guests