2014-12-25 5 views
0

Я использую пользовательский адаптер (BaseAdapter) для ListView для отображения списка объектов в моей программе. Я выполнил все в соответствии с учебным пособием, который я нашел в Интернете (http://www.codelearn.org/android-tutorial/android-listview), но я получаю сообщение об ошибке при попытке настроить LayoutInflater в методе getView() моего класса Adapter.ListView Inflater в BaseAdapter getView() метод

public View getView(int arg0, View arg1, ViewGroup arg2) { 
    if(arg1==null) { 

     LayoutInflater inflater =(LayoutInflater)EventListActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     arg1 = inflater.inflate(R.layout.eventitem, arg2, false); 
    }  

Где EventListActivity мой «MainActivity», где я:

public class EventListActivity extends Activity { 

private ListView listview; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.event_list); 
    //setting adapter to event list view 
    EventBaseAdapter eventadapter = new EventBaseAdapter(); 
    listview = (ListView)findViewById(R.id.eventlist); 
    listview.setAdapter(eventadapter); 


} 

Я получаю сообщение об ошибке в строке в классе адаптера, где я создающего LayoutInflater, в части «EventListActivity. это », говоря:« Нет экземпляра экземпляра типа EventListActivity доступен в области видимости ». Я понятия не имею, что это может означать, и я с удовольствием принимаю любые советы или помощь от вас, ребята.

Спасибо заранее!

+2

ваш класс адаптер в том же классе, как EventListActivity? – Darpan

+0

Нет, они находятся в двух разных файлах. –

ответ

1

Создать конструктор как это -

public CustomListAdapter(Activity activity, List<Movie> movieItems) { 
     this.activity = activity; 
     ... 
    } 

, а использование -

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

Это потому, что ваш файл адаптер не имеет каких-либо ссылок в своей деятельности; Следовательно, он не может получить услугу разворачивания макета. Мы передадим экземпляр Activity его конструктору и используем его в CustomListAdapter.

+0

Спасибо! Второй параметр конструктора, список, должен иметь любые значения? Я создаю объект списка в другой строке кода: List eventListItemsList = getDataForListView(); в начале моего класса адаптера. –

+0

необходимо только в том случае, если список, который вы хотите использовать в адаптере, также поступает из вашего класса Activity. Пока вы извлекаете его с помощью некоторой функции, то есть getDataForListView(), так что все должно быть хорошо. И отметьте ответ, принятый, если он решает вашу проблему. – Darpan

0

Создайте глобальный объект LayoutInflater, чтобы вы могли использовать его и в другом настраиваемом адаптере, а также метод Inflater.inflat пользователя в методе getView().

Как это

public class EventListActivity extends Activity { 

private ListView listview; 
LayoutInflater inflater; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.event_list); 

//init inflater 
inflater =(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

//setting adapter to event list view 
EventBaseAdapter eventadapter = new EventBaseAdapter(); 
listview = (ListView)findViewById(R.id.eventlist); 
listview.setAdapter(eventadapter); 


} 

и использовать его в коде ..

public View getView(int arg0, View arg1, ViewGroup arg2) { 
if(arg1==null) { 


    arg1 = inflater.inflate(R.layout.eventitem, arg2, false); 
} 
Смежные вопросы