Как добавить TextView в GridView в Android

Я уже знаю, как добавить String в gridView в android, но я хочу добавить текстовые поля для форматирования текста (Gravity, color и т. Д.). Это мой текущий код:

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(); } 

К сожалению, когда я запускаю его, gridview просто дает мне информацию каждого TextView: «android.id.widget.TextView ({42f20a88 и т. Д.}).

Как добавить textview в gridView?

Попробуйте что-то вроде этого

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> 

Пользовательский класс адаптера для 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; } } 

И затем, наконец, установите адаптер в свой основной класс

 gridView.setAdapter(new TextViewAdapter(this, YOUR_ARRAY_WITH_TEXT_FOR_TEXTVIEWS)); 

Также обратите внимание, что вы можете передавать любые другие значения, такие как цвет текста и как другой аргумент в конструкторе, а затем устанавливать их в адаптере, например …

 textView.setColor(textViewColors[position]); 

Для атрибутов, которые имеют все текстовые комментарии, вы можете изменить item.xml только 🙂 Я надеюсь, это помогло вам ….

Просто сделайте имя.getText (), и все готово!