I already know how to add String's to a gridView in android however I want to add textviews to format the text( Gravity, color, etc). This is my current code:
GridView gridView = (GridView) findViewById(R.id.grades);
ArrayList<TextView> display = new ArrayList<TextView>();
ArrayAdapter<TextView> adapter = new ArrayAdapter<TextView>(this,
android.R.layout.simple_list_item_1, display);
gridView.setAdapter(adapter);
for(int i = 0; i<currentClass.grades.size(); i++)
{
TextView name = new TextView(this);
TextView weight = new TextView(this);
TextView cur_points = new TextView(this);
TextView total_points = new TextView(this);
TextView cur_percent = new TextView(this);
name.setText(currentClass.grades.get(i).name);
weight.setText(currentClass.grades.get(i).weight);
cur_points.setText(currentClass.grades.get(i).cur_points);
total_points.setText(currentClass.grades.get(i).total_points);
cur_percent.setText(currentClass.grades.get(i).cur_percent);
name.setTextColor(Color.WHITE);
weight.setTextColor(Color.WHITE);
cur_points.setTextColor(Color.WHITE);
total_points.setTextColor(Color.WHITE);
cur_percent.setTextColor(Color.WHITE);
name.setSingleLine(true);
weight.setSingleLine(true);
cur_points.setSingleLine(true);
total_points.setSingleLine(true);
cur_percent.setSingleLine(true);
name.setGravity(Gravity.LEFT);
weight.setGravity(Gravity.RIGHT);
cur_points.setGravity(Gravity.RIGHT);
total_points.setGravity(Gravity.RIGHT);
cur_percent.setGravity(Gravity.RIGHT);
display.add(name);
display.add(weight);
display.add(cur_points);
display.add(total_points);
display.add(cur_percent);
adapter.notifyDataSetChanged();
}
Unfortunately when I run it the gridview simply gives me the information of each TextView: "android.id.widget.TextView({42f20a88 and so on}.
How would I add textview's to a gridView?
gridView. setAdapter(new TextViewAdapter(this, YOUR_ARRAY_WITH_TEXT_FOR_TEXTVIEWS)); also note that you can pass any other values like color of text and as another argument in constructor and then set them in adapter like ...
Create an XML file for each grid item to be displayed in GridView. Click on the app > res > layout > Right-Click > Layout Resource file and then name the file as card_item. Below is the code for the card_item. xml file.
This is how you can create gridview programmatically, GridView grid = new GridView(this); grid. setId(ViewIdentification. getId()); grid.
try it with something like this
gridview.xml
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridView1"
android:numColumns="auto_fit"
android:gravity="center"
android:columnWidth="100dp"
android:stretchMode="columnWidth"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</GridView>
item.xml
<TextView
android:id="@+id/grid_item_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label"
android:layout_marginTop="5px"
android:textSize="15px" >
</TextView>
Custom adapter class for textView
public class TextViewAdapter extends BaseAdapter {
private Context context;
private final String[] textViewValues;
public TextViewAdapter(Context context, String[] textViewValues) {
this.context = context;
this.textViewValues = textViewValues;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
// get layout from mobile.xml
gridView = inflater.inflate(R.layout.item, null);
// set value into textview
TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);
textView.setText(textViewValues[position]);
} else {
gridView = (View) convertView;
}
return gridView;
}
@Override
public int getCount() {
return textViewValues.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}
and then , finally set adapter in your main class
gridView.setAdapter(new TextViewAdapter(this, YOUR_ARRAY_WITH_TEXT_FOR_TEXTVIEWS));
also note that you can pass any other values like color of text and as another argument in constructor and then set them in adapter like ...
textView.setColor(textViewColors[position]);
for attributes that all textview have in common you can change the item.xml only :) i hope it helped you ....
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With