2017-02-23 34 views
1

Я использую Gridview, чтобы показать список навыков. Код работает нормально, даже заполняет точное количество элементов в соответствии с моим массивом. Тем не менее, TextView, который должен отображать имена элементов, пуст.TextViews, заполненные в моем GridView, отображаются пустым

Это код для моего GridView адаптера

SkillsAdapter.java

public class SkillsAdapter extends BaseAdapter { 

     private Context context; 
     private final String[] skillValues; 

     public SkillsAdapter(Context context, String[] skillValues) { 
      this.context = context; 
      this.skillValues = skillValues; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 

      LayoutInflater inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      View gridView; 

      if (convertView == null) { 

       // get layout from mobile.xml 
       gridView = inflater.inflate(R.layout.skills_single_item, null); 

       // set value into textview 
       textView = (TextView) gridView.findViewById(R.id.single_label); 
       textView.setText(skillValues[position]); 


      } else { 
       gridView = (View) convertView; 
      } 

      return gridView; 
     } 

     @Override 
     public int getCount() { 
      return skillValues.length; 
     } 

     @Override 
     public Object getItem(int position) { 
      return null; 
     } 

     @Override 
     public long getItemId(int position) { 
      return 0; 
     } 

    } 

Это код для моего файла макета skills_single_item.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:padding="5dp" 
    android:background="@drawable/rounded_corners"> 

    <TextView 
     android:id="@+id/single_label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="8dp" 
     android:layout_gravity="center"/> 

</RelativeLayout> 

Массив не является нулевым. Ошибка возникает где-то здесь

// set value into textview 
textView = (TextView) gridView.findViewById(R.id.single_label); 
textView.setText(skillValues[position]); 
+1

набора текста TextView из If Else –

+0

skillValues ​​является ArrayList ? так что вам нужно получить данные live skillValues.get (position) .toString() –

+0

Вы устанавливаете значение в «if», а что еще обстоит дело? Поместите эту строку setText после вашего if-else. –

ответ

1

Изменить расположение предмет XML с этим вашим я использовал свой класс адаптера его работа штраф на моей стороне

это может помочь вам

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#FFFFFF" 
    android:orientation="horizontal" 
    android:padding="5dp"> 

    <TextView 
     android:id="@+id/single_label" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_marginLeft="8dp" 
     android:textColor="#000000" /> 
</RelativeLayout> 
1

Set протестируйте в текстовом виде из, если условия, как:

if (convertView == null) { 

       // get layout from mobile.xml 
       gridView = inflater.inflate(R.layout.skills_single_item, null); 

       // set value into textview 
       textView = (TextView) gridView.findViewById(R.id.single_label); 



      } else { 
       gridView = (View) convertView; 
      } 
textView.setText(skillValues[position]); 
0

Move следующей строки из IF-то еще блоки

textView.setText(skillValues[position]); 

Как

if (convertView == null) { 
    // get layout from mobile.xml 
    gridView = inflater.inflate(R.layout.skills_single_item, null); 
    textView = (TextView) gridView.findViewById(R.id.single_label); 
    } else { 
     gridView = (View) convertView; 
    } 

    // set value into textview 
    textView.setText(skillValues[position]); 

Я recom исправить вас, чтобы прочитать андроид ViewHolder узор.

+0

Я пробовал это, но TextViews все еще пуст –

 Смежные вопросы

  • Нет связанных вопросов^_^