我在片段中有一个列表视图,我想感知列表视图上的点击,这样我就可以改变我的布局,但我的代码不起作用。 我的xml布局是:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</FrameLayout>
我的代码是:
ListView lists=(ListView)rootView.findViewById(android.R.id.list);
lists.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView parentView, View childView,
int position, long id)
{
// setDetail(position);
Toast.makeText(getActivity().getApplicationContext(), "Yea!!! click ho gae called", Toast.LENGTH_SHORT).show();
}
public void onNothingSelected(AdapterView parentView) {
}
});
但是这段代码什么也没做,请帮我整理一下,谢谢..
答案 0 :(得分:2)
首先,我假设您使用一些数据填充列表。
其次,你正在调用错误的方法,因为setOnItemSelectedListener
通常被调用来从列表中选择数据(最好的例子是微调器选择)。你应该打电话给setOnItemClickListener
(盲编码):
lists.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
// setDetail(position);
Toast.makeText(getActivity().getApplicationContext(), "Yea!!! click ho gae called", Toast.LENGTH_SHORT).show();
}
});
答案 1 :(得分:2)
您必须使用ListFragment的onListItemClick方法。
然后将该代码添加到ListFragment
类:
public void onListItemClick (ListView l, View v, int position, long id) {
//Do what you need
}
答案 2 :(得分:0)
把它放在你的代码中:
YOUR_LIST_VIEW.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Toast.makeText(getActivity().getApplicationContext(), "I was clicked", Toast.LENGTH_SHORT).show();
}
});
答案 3 :(得分:0)
U错误地实现了您的xml布局,因为它必须只包含框架布局,其中必须在运行时放置默认的片段列表视图。如果您需要任何进一步的帮助或代码段,请回复我。
答案 4 :(得分:0)
1.修改你的适配器代码。
ListView lists=(ListView)rootView.findViewById(android.R.id.list);
lists.setOnItemSelectedListener(your fragment instance);
您不需要在适配器中实现onClick处理程序。
2.处理片段中的onClick覆盖方法。
@Override
public boolean onClick(View v) {
//To Do
}