Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用SlideMenu检测ListView行单击_Java_Android - Fatal编程技术网

Java 如何使用SlideMenu检测ListView行单击

Java 如何使用SlideMenu检测ListView行单击,java,android,Java,Android,我正在使用,我已经实现了片段和ListView,现在我需要的是检测用户从幻灯片菜单中单击了哪一行。我怎么可能做到呢? 这是listView的代码: public class listFragment extends ListFragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflat

我正在使用,我已经实现了片段和ListView,现在我需要的是检测用户从幻灯片菜单中单击了哪一行。我怎么可能做到呢? 这是listView的代码:

public class listFragment extends ListFragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.menu, null);
}

public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
    SampleAdapter adapter = new SampleAdapter(getActivity());
    adapter.add(new SampleItem("menu left A", android.R.drawable.ic_menu_search));
    adapter.add(new SampleItem("menu left B", android.R.drawable.ic_menu_search));
    adapter.add(new SampleItem("menu left C", android.R.drawable.ic_menu_search));
    adapter.add(new SampleItem("menu left D", android.R.drawable.ic_menu_search));
    adapter.add(new SampleItem("menu left A", android.R.drawable.ic_menu_search));
    setListAdapter(adapter);

}

private class SampleItem {
    public String tag;
    public int iconRes;
    public SampleItem(String tag, int iconRes) {
        this.tag = tag; 
        this.iconRes = iconRes;
    }
}

public class SampleAdapter extends ArrayAdapter<SampleItem> {

    public SampleAdapter(Context context) {
        super(context, 0);
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.row, null);
        }
        ImageView icon = (ImageView) convertView.findViewById(R.id.row_icon);
        icon.setImageResource(getItem(position).iconRes);
        TextView title = (TextView) convertView.findViewById(R.id.row_title);
        title.setText(getItem(position).tag);

        return convertView;
    }

    }
  }
公共类listFragment扩展listFragment{
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
返回充气机。充气(右布局菜单,空);
}
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
SAMDUCCEAPTER适配器=新的SAMDUCCEAPTER(getActivity());
add(新的SampleItem(“menu left A”,android.R.drawable.ic_menu_search));
add(新的SampleItem(“menu left B”,android.R.drawable.ic_menu_search));
add(新的SampleItem(“menu left C”,android.R.drawable.ic_menu_search));
add(新的SampleItem(“menu left D”,android.R.drawable.ic_menu_search));
add(新的SampleItem(“menu left A”,android.R.drawable.ic_menu_search));
setListAdapter(适配器);
}
私有类样本项{
公共字符串标签;
公共国际学院;
公共样本项(字符串标记,int-iconRes){
this.tag=tag;
this.iconRes=iconRes;
}
}
公共类SamdCapter扩展了ArrayAdapter{
公共SAMADCAPTER(上下文){
超级(上下文,0);
}
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=LayoutInflater.from(getContext()).flate(R.layout.row,null);
}
ImageView图标=(ImageView)convertView.findViewById(R.id.row_图标);
icon.setImageResource(getItem(position).iconRes);
TextView title=(TextView)convertView.findViewById(R.id.row\u title);
title.setText(getItem(position.tag);
返回视图;
}
}
}

据我所知,方法

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.menu, null);
将返回ListView对象。因此可以调用setOnItemClickListener()方法。大概是这样的:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ListView list = (ListView) inflater.inflate(R.layout.menu, null);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
     // write your click handler here
     }
});
return list;
创建视图时的公共视图(布局、充气机、视图组容器、捆绑包保存状态){ ListView列表=(ListView)充气器充气(R.layout.menu,null); list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){ @凌驾 public void onItemClick(AdapterView父对象、视图、整型位置、长id){ //在这里写下你的点击处理程序 } }); 退货清单;
覆盖listfragment的onListItemClick()

    @Override
        public void onListItemClick(ListView l, View v, int position, long id) {
            super.onListItemClick(l, v, position, id);
           //here "position" is clicked item position
            }

希望这将对您有所帮助。

我使用了以下方法,而无需更改代码,并且效果良好:

@Override
public void onListItemClick(ListView l, View v, int position, long id) {

    Toast.makeText(getActivity(), "Row clicked",
               Toast.LENGTH_LONG).show();
}

默认情况下,ListFragment有自己的ListView,但您似乎正在使用自定义函数
onCreateView
覆盖默认实现。您需要确保此布局(
R.layout.menu
)内部有ListView,其id设置为
android.R.id.list
。然后,您应该能够通过调用
ListFragment.getListView()
onCreateView
中通过id查找视图,或者稍后在片段内部的任何位置通过调用
ListFragment.getListView()
来获取对该列表的引用

然后你可以:

  • 覆盖
    public void onListItemClick(ListView l、View v、int position、long id)
    应该为您自动调用它
  • 获取对ListView的引用,并在其上手动设置
    setOnItemClickListener(AdapterView.OnItemClickListener)
    (只需确保在整个布局膨胀并可供您使用后进行设置)
  • 如果这对您不起作用,您也应该在此处放置
    R.layout.menu
    帮助他人帮助您的内容:)

    致以最良好的祝愿


    Darek

    @HovercraftFullOfEels ye抱歉添加了android标记请检查我的更新答案代码没有给出任何错误但不起作用,我试图在onItemClick内设置断点,但当我单击行时它没有被调用。相反,请尝试向视图中添加单击侦听器(convertView)在getView中。任何视图都可以有一个ClickListener,并且应该可以在无需实现的情况下工作。问题是我无法检索listView