繁体   English   中英

如何在导航抽屉上设置onClick侦听器

[英]How to set onClick listener on navigation drawer

它在SlidingMenuFragment.java中 ,我希望列出的每个项目都是可点击的。 请帮助实现这一目标。

抽屉物品

我希望这3个可点击,以便我可以打开一个新活动。

data.add("One");
data.add("Two");
data.add("Three");

导航抽屉项目

感谢您的帮助。 下面的代码来自http://manishkpr.webheavens.com/android-material-design-navigation-drawer-example/

package com.manishkpr.androidmaterialnavigationdrawer;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.*;

public class SlidingMenuFragment extends Fragment {
List<String>data;
ListView list_view;
SlidingMenuListAdapter adapter;

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_sliding_menu, null);
    setUpView(root);
    return root;
}
void setUpView(ViewGroup root){
    list_view  =  (ListView)root.findViewById(R.id.list_view);
    initList();
    setUpClick();
}
void initList(){
    data = new ArrayList<String>();

    data.add("One");
    data.add("Two");
    data.add("Three");

    adapter = new SlidingMenuListAdapter(getActivity(),data);
    list_view.setAdapter(adapter);
}
void setUpClick(){
    list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                MainActivity.obj.closeDrawer();
                Toast.makeText(getActivity(),"Hi "+position,Toast.LENGTH_SHORT).show();
            }
        });
}
}

可以在以下android文档中找到更详尽的解释的更干净的实现: http : //developer.android.com/training/implementing-navigation/nav-drawer.html

就是说,看起来您已经有了一些可单击的列表项,现在要做的就是在ItemClickListener中启动新活动。 您可以通过引用'position'参数使每个项目做不同的事情:

list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            MainActivity.obj.closeDrawer();
            Toast.makeText(getActivity(),"Hi "+position,Toast.LENGTH_SHORT).show();

            // Start 'YourActivity' when first item is clicked
            if(position == 0){
                Intent = new Intent(getActivity(), YourActivity.class);
                getActivity().startActivity(intent)
            }
        }
    });

我认为重要的是,您必须学习一些更基本的知识,例如如何创建新的活动并在与导航抽屉之类的特定事物过于联系之前启动它们。

试试这个

list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                MainActivity.obj.closeDrawer();
                Toast.makeText(getActivity(),"Hi "+position,Toast.LENGTH_SHORT).show();

                //Try to include this to your code
                getActivity().startActivity(new Intent(this, YourAnotherActivity.class));
            }
        });

作为示例,您还可以在代码中尝试如下操作:

if(position == 0) {
     Intent AlbumsIntent = new Intent(MainActivity.this, avtivity.class);
     startActivity(AlbumsIntent);
}else if (position==1){
      Intent ArtistsIntent = new Intent(MainActivity.this, avtivity1.class);
      startActivity(ArtistsIntent);
}else if (position==2){
      Intent SongsIntent = new Intent(MainActivity.this, activity2.class);
      startActivity(SongsIntent);
}else if (position==3){
      Intent CardIntent = new Intent(MainActivity.this, activity3.class);
      startActivity(CardIntent);
}else if (position==4){
      Intent LogoutIntent = new Intent(MainActivity.this, avtivity4.class);
      startActivity(LogoutIntent);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM