Пользовательский навигационный ящик не может надувать перерабатывающего устройства - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь создать пользовательский навигационный ящик.то, что я сделал, создал Drawerlayout с рециркуляцией в нем.

когда я запускаю приложение, это то, что я получаю Screenshot

У кого-нибудь естьидея, что происходит?

activity_navigation_drawer.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/dd_drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".NavigationDrawerActivity">

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:background="@color/blue"
        android:choiceMode="singleChoice"
        android:divider="@null"
        android:scrollbars="vertical"
        app:layoutManager="android.support.v7.widget.LinearLayoutManager" />

</android.support.v4.widget.DrawerLayout>

knifeItem.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/d_item"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<ImageView
    android:id="@+id/menu_item_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_person" />

<TextView
    android:id="@+id/menu_item_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:textColor="@color/white" />

</RelativeLayout>

DrawerAdapter

    public class DrawerAdapter extends RecyclerView.Adapter<DrawerAdapter.DrawerItemViewHolder>{

    Context mContext;
    int layoutResID;
    ArrayList<DrawerItem> menuList;
    onItemClickListner mListner;

    public interface onItemClickListner{
        void onItemClick(int position);
    }



    public class DrawerItemViewHolder extends RecyclerView.ViewHolder{
       TextView itemTitle;
       onItemClickListner listner;

        public DrawerItemViewHolder(View itemView,onItemClickListner listner) {
            super(itemView);
            itemTitle=itemView.findViewById(R.id.menu_item_title);
            this.listner=listner;
        }
    }//ViewHolder

    public DrawerAdapter(Context context,int resource,ArrayList<DrawerItem> itemList,onItemClickListner listner){

        mContext=context;
        layoutResID=resource;
        menuList=itemList;
        mListner=listner;
    }



    //======================================================================================
    @Override
    public DrawerItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v=LayoutInflater.from(parent.getContext()).inflate(R.layout.drawer_list_item,parent,false);
        DrawerItemViewHolder dvh=new DrawerItemViewHolder(v,mListner);
     return dvh;
    }
    //======================================================================================

    @Override
    public void onBindViewHolder(DrawerItemViewHolder holder, int position) {

        DrawerItem currentItem=menuList.get(position);

        holder.itemTitle.setText(currentItem.getTitle());
        holder.itemTitle.setTextColor(Color.WHITE);
        holder.itemTitle.setBackgroundColor(Color.BLACK);
    }
    //======================================================================================

    @Override
    public int getItemCount() {
        return 0;
    }
}

DrawerItem

    public class DrawerItem {

    String title;
    int imgResID;

    public DrawerItem(String title){
        this.title=title;
        imgResID =0;
    }

    public String getTitle() {
        return title;
    }

    public int getImgResID() {
        return imgResID;
    }

}

И в своем классе деятельности я использовал эти методы

oncreate ()

   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.activity_navigation_drawer);

    mTitle=mDrawerTitle=getTitle();
    mDrawerList = findViewById(R.id.left_drawer);
    mDrawerLayout = findViewById(R.id.dd_drawer);

    getMenuItems();

    //add shadow
    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);


    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

    mDrawerToggle = new ActionBarDrawerToggle(
            this, mDrawerLayout, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
        public void onDrawerClosed(View view) {
            getSupportActionBar().setTitle(mTitle);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }

        public void onDrawerOpened(View drawerView) {
            getSupportActionBar().setTitle(mDrawerTitle);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }
    };


    mDrawerLayout.setDrawerListener(mDrawerToggle);
    if (savedInstanceState == null) {
        selectItem(0);
    }
}//END OF ON_CREATE

 public void getMenuItems(){

    //GET MENU ITEMS XML
    String menuURL="www.somthing.com/xmldata";
    OkHttpClient client=new OkHttpClient();
    Request request=new Request.Builder()
            .url(menuURL)
            .build();

    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            e.printStackTrace();
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if (response.isSuccessful()){
                String mResponse = response.body().toString();
                String xmm=response.body().string();
                System.out.print("\nMenu Items.\n"+xmm+"\n");

                xmlData=xmm;
                FillMenu(xmlData);
                //navigationItemTitle=getTagValue(xmlData,"title");

            }
        }
    });
}//END OF GETMENU ITEMS

public void FillMenu(String xmlData){

    try {
        DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder=docFactory.newDocumentBuilder();
        InputSource inputSource=new InputSource();
        inputSource.setCharacterStream(new StringReader(xmlData));
        Document document=documentBuilder.parse(inputSource);
        NodeList list=document.getElementsByTagName("Notify");


        for(int i=0;i<list.getLength();i++)
        {
            Node eachNode=list.item(i);

            if(eachNode.getNodeType()==Node.ELEMENT_NODE)
            {
                Element eachElement=(Element) eachNode;
                drawerItemList.add(new DrawerItem((eachElement).getElementsByTagName("title").item(0).getTextContent()));
            }
        }

        DrawerAdapter drawerAdapter=new DrawerAdapter(this,R.layout.drawer_list_item,drawerItemList,this);
        mDrawerList.setAdapter(drawerAdapter);

    }catch (Exception e){

    }

}

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.navigation_drawer, menu);
        return true;
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // If the nav drawer is open, hide action items related to the content view
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
        menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Pass any configuration change to the drawer toggls
    mDrawerToggle.onConfigurationChanged(newConfig);
}

1 Ответ

0 голосов
/ 18 октября 2018

Измените ваш getItemCount () метод в вашем адаптере представления переработчика с этого

@Override
public int getItemCount() {
    return 0;
}

На Это

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