2015-08-10 3 views
0

Я реализую дизайн материалов в своем приложении и конвертирую ListViews в RecyclerViews. Я слежу за учебниками, которые использовали метод getListView(), но они больше не доступны, когда я расширяю свой класс с помощью AppCompatActivity. Есть ли альтернатива, которую я могу использовать?getListView() замена при использовании RecyclerView

+1

Метод getListView() доступен для ListActivity, ListFragment, который возвращает вид списка. Чтобы заменить такие экземпляры, просто поместите recyclerview в AppCompatActivity и используйте это вместо этого. –

ответ

1

getListView() - метод удобства на ListActivity и ListFragment. Однако нет необходимости использовать ListActivity или ListFragment, чтобы использовать ListView. Если вы используете обычный Activity или обычный Fragment, вы должны получить ListView из своего макета, используя findViewById(), как и с любым другим виджетом.

То же самое относится и к RecyclerView. Вы получите RecyclerView с вашего завышенного макета, используя findViewById().

Теперь вы можете создать свои собственные RecyclerViewActivity и RecyclerViewFragment, которые вы можете продлить, если хотите. Например, вы могли бы иметь RecyclerViewActivity так:

/*** 
Copyright (c) 2008-2015 CommonsWare, LLC 
Licensed under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy 
of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required 
by applicable law or agreed to in writing, software distributed under the 
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
OF ANY KIND, either express or implied. See the License for the specific 
language governing permissions and limitations under the License. 

From _The Busy Coder's Guide to Android Development_ 
https://commonsware.com/Android 
*/ 

package com.commonsware.android.recyclerview.simplelist; 

import android.app.Activity; 
import android.support.v7.widget.RecyclerView; 

public class RecyclerViewActivity extends Activity { 
    private RecyclerView rv=null; 

    public void setAdapter(RecyclerView.Adapter adapter) { 
    getRecyclerView().setAdapter(adapter); 
    } 

    public RecyclerView.Adapter getAdapter() { 
    return(getRecyclerView().getAdapter()); 
    } 

    public void setLayoutManager(RecyclerView.LayoutManager mgr) { 
    getRecyclerView().setLayoutManager(mgr); 
    } 

    public RecyclerView getRecyclerView() { 
    if (rv==null) { 
     rv=new RecyclerView(this); 
     rv.setHasFixedSize(true); 
     setContentView(rv); 
    } 

    return(rv); 
    } 
} 

Здесь Вы можете использовать getRecyclerView() и RecyclerViewActivity создаст экземпляр RecyclerView для вас и установить его в качестве точки зрения содержания деятельности. В моем случае RecyclerViewActivity наследует от Activity, меняя его наследование с AppCompatActivity - это вопрос добавления 9 символов к базовому классу (Activity ->AppCompatActivity).

+0

Спасибо, @CommonsWare. Я понимаю это сейчас. – KvnH

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