2015-04-10 4 views
1

Я попытался реализовать новый RecyclerView, но он ничего не показывает. Я прошел через другие подобные вопросы и убедился, что я не совершаю те же ошибки. Пожалуйста, помогите мне найти то, что мне не хватает здесь.RecyclerView ничего не показывает

Также дайте мне знать, если вам нужны другие файлы.

MainActivity

public class MainActivity extends ActionBarActivity { 

    private Toolbar toolbar; 

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

     toolbar = (Toolbar) findViewById(R.id.app_bar); 
     setSupportActionBar(toolbar); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     NavigationDrawerFragment navigationDrawerFragment = (NavigationDrawerFragment)  getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer); 
     navigationDrawerFragment.setup((DrawerLayout)findViewById(R.id.drawer_layout), toolbar); 

    } 

} 

NavigationDrawerFragment

public class NavigationDrawerFragment extends Fragment { 

private RecyclerView recyclerView; 
DrawerLayout drawerLayout; 
ActionBarDrawerToggle actionBarDrawerToggle; 
private NavigationDrawerViewAdapter navigationDrawerViewAdapter; 

public NavigationDrawerFragment() { 
    // Required empty public constructor 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false); 
    recyclerView = (RecyclerView) layout.findViewById(R.id.rvDrawerList); 
    navigationDrawerViewAdapter = new NavigationDrawerViewAdapter(getActivity(), getNavigationDrawerData()); 
    recyclerView.setAdapter(navigationDrawerViewAdapter); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    return layout; 
} 

public List<NavigationDrawerItem> getNavigationDrawerData() { 

    List<NavigationDrawerItem> navigationDrawerItemList = new ArrayList<>(); 
    int[] imageIds = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher}; 
    String[] titles = {"Title 1", "Title 2", "Title 3", "Title 4", "Title 5"}; 

    for (int i = 0; i < titles.length ; i++){ 
     NavigationDrawerItem navigationDrawerItem = new NavigationDrawerItem(imageIds[i], titles[i], titles[i]); 
     navigationDrawerItemList.add(navigationDrawerItem); 
    } 

    return navigationDrawerItemList; 
} 


public void setup(DrawerLayout drawerLayout, final Toolbar toolbar) { 

    this.drawerLayout = drawerLayout; 
    this.actionBarDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) { 
     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
     } 

     @Override 
     public void onDrawerClosed(View drawerView) { 
      super.onDrawerClosed(drawerView); 
     } 

    }; 
    drawerLayout.setDrawerListener(actionBarDrawerToggle); 
    drawerLayout.post(new Runnable() { 
     @Override 
     public void run() { 
      actionBarDrawerToggle.syncState(); 
     } 
    }); 
} 
} 

NavigationDrawerViewAdapter

public class NavigationDrawerViewAdapter extends RecyclerView.Adapter<NavigationDrawerViewAdapter.NavigationDrawerViewHolder> { 

// Declaring Variable to Understand which View is being worked on, IF the view under inflation and population is header or Item 
private static final int TYPE_HEADER = 0; 
private static final int TYPE_ITEM = 1; 

private LayoutInflater layoutInflater; 
List<NavigationDrawerItem> navigationDrawerItemList = new ArrayList<NavigationDrawerItem>(); 

public NavigationDrawerViewAdapter(Context context, List<NavigationDrawerItem> navigationDrawerItemList) { 
    layoutInflater = LayoutInflater.from(context); 
} 

@Override 
public NavigationDrawerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = layoutInflater.inflate(R.layout.item_navigation_drawer, parent, false); 
    NavigationDrawerViewHolder navigationDrawerViewHolder = new NavigationDrawerViewHolder(view); 
    return navigationDrawerViewHolder; 
} 

@Override 
public void onBindViewHolder(NavigationDrawerViewHolder holder, int position) { 
    NavigationDrawerItem navigationDrawerItem = navigationDrawerItemList.get(position); 
    holder.ivImage.setImageResource(navigationDrawerItem.getImageId()); 
    holder.tvTitle.setText(navigationDrawerItem.getTitle()); 
    holder.tvDescription.setText(navigationDrawerItem.getDescription()); 
} 

@Override 
public int getItemCount() { 
    return navigationDrawerItemList.size(); 
} 

class NavigationDrawerViewHolder extends RecyclerView.ViewHolder { 

    ImageView ivImage; 
    TextView tvTitle; 
    TextView tvDescription; 

    public NavigationDrawerViewHolder(View itemView) { 
     super(itemView); 

     ivImage = (ImageView) itemView.findViewById(R.id.ivImage); 
     tvTitle = (TextView) itemView.findViewById(R.id.tvTitle); 
     tvDescription = (TextView) itemView.findViewById(R.id.tvDescription); 

    } 
} 
} 
+0

'navigationDrawerItemList' еще не присваивает значение – Xcihnegn

ответ

2

navigationDrawerItemList в NavigationDrawerViewAdapter не ссылается в список, который вы прошли от NavigationDrawerFragment, добавьте строку
this.navigationDrawerItemList =navigationDrawerItemList
к NavigationDrawerViewAdapters строителю.

+0

Спасибо, приятель, мне интересно, как я пропустил такую ​​глупую вещь. – dreamer

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