单击列表视图中的事件片段

时间:2013-09-04 20:59:14

标签: android xml android-layout listview android-fragments

我在片段中有一个列表视图,我想感知列表视图上的点击,这样我就可以改变我的布局,但我的代码不起作用。 我的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) {  



           }  
        });

但是这段代码什么也没做,请帮我整理一下,谢谢..

5 个答案:

答案 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
}
相关问题