2014-11-21 2 views
0

У меня возникла проблема с моим настраиваемым NavigationDrawer. Действительно, он открывается и закрывается отлично, но он не отображает список ... Поскольку лог-код не указывает на какую-либо ошибку, довольно сложно найти ошибку для меня, поэтому, возможно, другая пара глаз обнаружит это легко!Custom NavigationDrawer

ObjectDrawerItem:

public class ObjectDrawerItem { 

    public int icon; 
    public String name; 

    public ObjectDrawerItem(int icon, String name) { 
     this.icon = icon; 
     this.name = name; 
    } 
} 

DrawerItemCustomAdapter:

public class DrawerItemCustomAdapter extends ArrayAdapter<ObjectDrawerItem> { 

    Context mContext; 
    int mLayoutResourceId; 
    ObjectDrawerItem mData[] = null; 

    public DrawerItemCustomAdapter(Context context, int resource, ObjectDrawerItem[] data) { 

     super(context, resource); 
     this.mLayoutResourceId = resource; 
     this.mContext = context; 
     this.mData = data; 
    } 



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

     View listItem = convertView; 
     ObjectDrawerItem folder = mData[position]; 


     LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); 
     listItem = inflater.inflate(mLayoutResourceId, parent, false); 

     ImageView imageViewIcon = (ImageView) listItem.findViewById(R.id.imageViewIcon); 
     TextView textViewName = (TextView) listItem.findViewById(R.id.textViewName); 

     imageViewIcon.setImageResource(folder.icon); 
     textViewName.setText(folder.name); 

     return listItem; 
    } 

} 

NavigationDrawerHelper:

public class NavigationDrawerHelper{ 

    private String[] mNavigationDrawerItemTitles; 
    DrawerLayout mDrawerLayout; 
    ListView mDrawerListView; 
    private ActionBarDrawerToggle mDrawerToggle; 

    public void init(Activity activity, ListView.OnItemClickListener listener) { 

     mNavigationDrawerItemTitles = activity.getResources().getStringArray(R.array.navigation_drawer_items_array); 
     mDrawerLayout = (DrawerLayout) activity.findViewById(R.id.drawer_layout); 
     mDrawerListView = (ListView) activity.findViewById(R.id.left_drawer); 

     // list the drawer items 
     ObjectDrawerItem[] drawerItem = new ObjectDrawerItem[3]; 

     drawerItem[0] = new ObjectDrawerItem(R.drawable.ic_action_copy, "Create"); 
     drawerItem[1] = new ObjectDrawerItem(R.drawable.ic_action_refresh, "Read"); 
     drawerItem[2] = new ObjectDrawerItem(R.drawable.ic_action_share, "Help"); 


     DrawerItemCustomAdapter adapter = new DrawerItemCustomAdapter(activity, R.layout.listview_item_row, drawerItem); 
     mDrawerListView.setAdapter(adapter); 
     mDrawerListView.setOnItemClickListener(listener); 


     mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
     mDrawerListView.setItemChecked(0, true); 

     setupActionBar(activity); 

    } 
} 

И в моей деятельности (реализует ListView.OnItemClickListener) «s OnCreate() я называю Init NavigationDrawerHelper():

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

    updateWeather(); 

    mNavigationDrawerHelper = new NavigationDrawerHelper(); 
    mNavigationDrawerHelper.init(this,this); 
} 

ответ

0

В конечном счете, это выглядит как проблема любит с адаптером, который проходит в ArrayAdapter. Расширьте и используйте BaseAdapter.

Проблема заключается в том, что вы передаете данные, но сам ArrayAdapter не знает размер данных [и, следовательно, не знает, сколько строк необходимо создать и, следовательно, не будет вызывать ваш getView ()]. Возможно, существует возможность дальнейшего расширения и изменения массива ArrayAdapter для установки данных самостоятельно, но в этот момент вы практически используете BaseAdapter.

[Также предполагается, что ваш xml хорошо сформирован и совершенен]

+0

Я сделал эту работу! Спасибо!! – Makoto

+0

Без проблем, рад помочь – MDragon00

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