Android 片段onListItemClick
我的onListItemClick在我单击item时是从不调用的,类是extends fragment而不是listfragment,因为我在这个片段中有其他视图项不是list,所以如何在类extends fragment中实现onListItemClick 阶级Android 片段onListItemClick,android,listview,android-fragments,onclick,fragment,Android,Listview,Android Fragments,Onclick,Fragment,我的onListItemClick在我单击item时是从不调用的,类是extends fragment而不是listfragment,因为我在这个片段中有其他视图项不是list,所以如何在类extends fragment中实现onListItemClick 阶级 public类MainFiles扩展片段 { 数组列表项; CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态) { 视图=充气机。充气(R.layout.files,container,false); But
public类MainFiles扩展片段
{
数组列表项;
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{
视图=充气机。充气(R.layout.files,container,false);
Button-Button\u-up=(Button)view.findViewById(R.id.Button\u-up);
items=newarraylist();
MyAdapter=新的MyAdapter(getActivity(),R.layout.row,items);
ListView myList=(ListView)view.findViewById(R.id.list);
myList.setAdapter(适配器);
返回视图;
}
public void onListItemClick(列表视图l、视图v、整数位置、长id)
{
}
}
将OnItemClickListener
显式添加到您的列表视图中
myList.setOnItemClickListener(this);
您还必须确保您的片段
实现了OnItemClickListener
类型:
public class MainFiles extends Fragment implements OnItemClickListener
另一种方法是创建一个专用的
OnItemClickListener
子类,以传递给列表视图
:
myList.setOnItemClickListener(new MyOnItemClickListener());
/* ... */
private class MyOnItemClickListener implements OnItemClickListener {
/* ... */
}
您忘记设置setOnItemClickListener 在
myList.setAdapter(适配器)之后代码>添加此项:
myList.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int position,long id){
new File(items.get(position));
fileList(path.get(position));
showPath(current_path);
}
});
myList.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
新文件(items.get(position));
文件列表(path.get(position));
显示路径(当前路径);
}
});
我已经在这样的片段中实现了侦听器
public class DetailsFragment extends Fragment implements OnItemClickListener {
private ListView listView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_details, container, false);
// list view
listView = (ListView) root.findViewById(R.id.listView);
listView.setListAdapter(new DetailsAdapter(getActivity(), list));
listView.setOnItemClickListener(this);
return root;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// handle click here
}
}
public类详细信息片段扩展片段实现MClickListener{
私有列表视图列表视图;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根=充气机。充气(R.layout.fragment\u详细信息,容器,错误);
//列表视图
listView=(listView)root.findViewById(R.id.listView);
setListAdapter(新的DetailsAdapter(getActivity(),list));
setOnItemClickListener(this);
返回根;
}
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//点击这里
}
}
你的片段必须扩展ListFragment,如果你的版面有一个id=android:id/list的listview,那么你的版面中除了列表之外还可以有更多的内容。我已经发布了相同的答案,不管怎样,我将+1:)不!您不必实现该接口!我已经看到这个概念上的错误有一段时间了。片段与侦听器无关,因此从概念上讲,以这种方式看待它是错误的。正确的方法是在适当的位置创建一个监听器。我强烈建议您了解更多关于什么以及何时实现接口的信息,这是OOP中的一个基本概念。@FabricioPH类似的内容?请注意,答案几乎是两年前的,OP暗示他想用第一种方法来做。@Niekharman是的,这样更好。但是除了他想怎么做之外,这在概念上是错误的,不是很好。您的第一个解决方案肯定会起作用,但让开始学习OOP的人以这种方式使用它是不对的,因为它在概念上是错误的。我的主张是,类MainFiles不应该被视为监听器。
public class DetailsFragment extends Fragment implements OnItemClickListener {
private ListView listView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_details, container, false);
// list view
listView = (ListView) root.findViewById(R.id.listView);
listView.setListAdapter(new DetailsAdapter(getActivity(), list));
listView.setOnItemClickListener(this);
return root;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// handle click here
}
}