2013-08-24 3 views
0

Изучайте Android, и я пытаюсь настроить несколько общий ListFragment с помощью настраиваемого ArrayAdapter. Я получаю сообщение об ошибке по адресу:ListFragment с адаптером CustomArray

adapter= new myAdapter(context, list); 

Вот мой ListFragment:

public class sideFragment<T extends models.Listable> extends ListFragment{ 
@Override 
public void onStart() { 
    super.onStart(); 
    adapter= new myAdapter(context, list); 
} 
public void setList(List<T> t){ 
    list=t; 
} 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    adapter = new myAdapter (getActivity(),list);  
} 

И мой ArrayAdapter:

public class myAdapter extends ArrayAdapter<T>{ 
    Context context; 
    List<T> list; 
    public myAdapter(Context context, List<T> list){ 
     super(context, android.R.id.content, list); 
     this.context=context; 
     this.list=list; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
     LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = vi.inflate(R.layout.list_item, parent); 

     if(view == null){ 
      Log.e("SIDEFRAG","VIEW NOT CREATED"); 
     } 
     T t = list.get(position); 

     ImageButton image= (ImageButton) view.findViewById(R.id.image_button); 
     TextView tv1 = (TextView) view.findViewById(R.id.text_view1); 
     TextView tv2 = (TextView) view.findViewById(R.id.text_view2); 

     tv1.setText(t.getName()); 
     tv2.setText(t.getDescription()); 

     if (t instanceof models.Formation){ 
      image.setBackgroundColor(android.graphics.Color.BLACK); 
     } else 
      image.setBackgroundColor(android.graphics.Color.WHITE);    
     return view; 
    } 
     }  
} 

Am действительно новым для Android, пожалуйста, помогите мне понять, что я делать не так?

Спасибо

+1

Я думаю, что вы не инициализируете переменную 'list' перед вызовом' myadapter'. –

+0

@VimalBera благодарю вас, миллион сэр. Это действительно проблема. Я новичок, вот почему я пропустил такую ​​элементарную проблему –

+0

Lol @RaymondMachira. Не нужно благодарить. И BTW Я не сэр, я тоже новичок .. :) –

ответ

0

Решение является то, что GetCount() возвращается 0 для myAdapter. Поэтому я просто использовал mAdapter.add(temp), а затем mAdapter.notifyDataSetChanged(), и он сработал. Мне также пришлось изменить строку row = inflater.inflate(R.id.pager, parent, false); на row = inflater.inflate(R.layout.listview_row, parent, false);

+0

Спасибо, вопрос был решен - см. Комментарии. –

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