1

I want to set background image to all rows of a GridView. I used this code:

GridView gv = (GridView) findViewById(R.id.grid); ArrayAdapter<String> aa = new ArrayAdapter<String>( this, R.layout.row, items); gv.setAdapter(aa); gv.setOnItemClickListener(this); 

main.xml: (I set GridView design here)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/selection" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="14pt" android:textStyle="bold" /> <GridView android:id="@+id/grid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:verticalSpacing="65px" android:horizontalSpacing="5px" android:numColumns="auto_fit" android:columnWidth="100px" android:stretchMode="columnWidth" android:gravity="center" android:fastScrollEnabled="true" /> 

row.xml: (I set rows of Grid view design here)

<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:orientation = "horizontal" android:background="@drawable/rowbg" > <TextView android:id = "@+id/label" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:textSize = "40sp" /> 

When i run project it forces to close program. But when I change second row as below, it runs well, ofcorse without any design for rows:

ArrayAdapter<String> aa = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, items); 

Which part of my code should be changed?

Thanks


After running the program with eclipse a dialoge appears: "The application has stopped unexceptedly. Please try again." and in LogCat this message appears: "06-21 12:05:25.724: E/dalvikvm(305): Unable to open stack trace file '/data/anr/traces.txt': Permission denied"

I also try running application on Galaxy S, and I see the same error.

2 Answers 2

2

Create an adapter class which extends ArrayAdapter.

In the getView method of this class, inflate the layout for row, access the textview to which the data should be set.

Sign up to request clarification or add additional context in comments.

Comments

1

A good solution is to subclass the gridview as described here:

http://erikw.eu/android-row-background-in-gridview/

and reproduced below:

public class MyGridView extends GridView { private Bitmap background; public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); background = BitmapFactory.decodeResource(getResources(), R.drawable.bg); } @Override protected void dispatchDraw(Canvas canvas) { int count = getChildCount(); int top = count &gt; 0 ? getChildAt(0).getTop() : 0; int backgroundWidth = background.getWidth(); int backgroundHeight = background.getHeight(); int width = getWidth(); int height = getHeight(); for (int y = top; y &lt; height; y += backgroundHeight){ for (int x = 0; x &lt; width; x += backgroundWidth){ canvas.drawBitmap(background, x, y, null); } } super.dispatchDraw(canvas); } } 

usage

<your.package.name.MyGridView android:id="@+id/mygridview" <!-- other GridView configuration parameters --> /> 

1 Comment

Note that link-only answers are discouraged, references tend to get stale over time. Consider adding a stand-alone synopsis here, keeping the link as a reference.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.