AdapterView.OnItemClickListener()在我的customAdapter中不起作用

时间:2013-06-04 09:06:21

标签: android android-listview

请参阅此图片https://www.dropbox.com/s/6zoj9lw10oc07xa/to_dropbox.png

what i am doing : 我正在创建一个list_view,我正在添加自定义适配器。

what i am using : 我正在使用,listView,customAdapter,menuitem。 listView:整个应用程序中的单个列表视图 customadapters:3个自定义适配器 menuitem:1

How i am implementing : 我有正确获取内容的数据库,从该数据库我通过过滤3种类型的数据在listview中输入了这些值: 默认情况下输入第一个adapter_type(在onCreate中)。

adapter = new Adapter_forCompletedReminder( array_today_title , this) ;
ls.setAdapter(adapter) ;

按下menuitem,在我的列表视图中输入第二个adapter_type。

adapter = new Adapter_forCompletedReminder( array_past_2_day_title , this) ;
ls.setAdapter(adapter) ;

按下menuitem,在我的列表视图中输入第3个adapter_type。

adapter = new Adapter_forCompletedReminder( array_other_day_title , this) ;
ls.setAdapter(adapter) ;

what is my problem : 此代码添加在onCreate()方法中。

ls.setOnItemClickListener( new AdapterView.OnItemClickListener() 
{
    public void onItemClick(AdapterView<?> adapterView , View view , int position ,long arg3) 
    {
        Log.i("Item clicked","tushar:itemclicked") ;
    }
});

当我试图实现AdapterView.OnItemClickListener()时,它无法正常工作...... 代码没有崩溃(log cat中没有红线)。 单击llist_view_element

时,代码未执行

感谢您阅读我的问题。

3 个答案:

答案 0 :(得分:10)

您在customview_completedxml_listview.xml中使用了复选框,这就是onItemClick侦听器无法正常工作的原因。如果在复选框中设置clickable =“false”,则onItemclick侦听器将起作用。

如果你想要复选框可以工作,那么你必须在自定义适配器类中设置onclicklistener事件。

//我编辑getView

 @Override
  public View getView(int position, View convertView, ViewGroup parent)  
   { 
    LayoutInflater inflater = LayoutInflater.from(ob) ; 
    View v = inflater.inflate(R.layout.customview_completedxml_listview, null ) ; 


     TextView txt = ( TextView ) v.findViewById(R.id.txt_fordisplayingdata) ; 
      txt.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
             Toast.makeText(ob, "Hello", Toast.LENGTH_SHORT).show();

        }
    });
      txt.setText(recieved_Array[position]) ; 

      return v ; 
   } 

/////////////////////// //第二个解决方案在复选框

中设置android:focusable =“false”
     <?xml version="1.0" encoding="utf-8"?> 
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="50dp"
       android:orientation="horizontal" 
       > 

    <TextView 
    android:id="@+id/txt_fordisplayingdata"
    android:layout_width="240dp"
    android:text="display data"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_marginLeft="10dp"
    /> 

  <TextView 
    android:id="@+id/txt_fordisplayingLargerdata"
    android:layout_width="240dp"
    android:text="display data larger bahut larger "
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_marginLeft="10dp"
    android:visibility="gone"
    /> 

  <View
    android:layout_width="2dp"
    android:layout_toRightOf="@id/txt_fordisplayingdata"
    android:layout_height="15dp"
    android:layout_marginLeft="15dp"
    android:layout_centerVertical="true"
    android:id="@+id/view_forcompletedtask"
    /> 


  <CheckBox 
    android:layout_toRightOf="@id/view_forcompletedtask"
    android:id="@+id/checkbox_tocomplete"
    android:layout_marginLeft="15dp"
    android:layout_width="wrap_content"
    android:focusable="false"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    /> 

</RelativeLayout>

答案 1 :(得分:8)

以下是您可以尝试的一些事项: -

  1. 如果listview项目中有任何按钮(或复选框)或任何处理click事件的元素,则对每个元素执行此操作: -

    android:focusable = "false"  
    android:focusableInTouchMode = "false"
    
  2. 尝试设置此

    list.setItemsCanFocus(false);
    
  3. 覆盖onItemClick()方法

    ls.setOnItemClickListener( new AdapterView.OnItemClickListener()  
    {  
    @Override  
    public void onItemClick(AdapterView<?> adapterView , View view , int position ,long arg3)   
    {  
        Log.i("Item clicked","tushar:itemclicked") ;  
    }  
    });
    

答案 2 :(得分:1)

我真的无法说出你究竟遇到了什么问题,但我为你写了一个非常简单的例子。尝试一下,如果它有效 - 只需将当前项目移植到我的示例项目中。 https://docs.google.com/file/d/0Bz4Xd7Ju_kbYbVlyd1dvYTJZYTg/edit?usp=sharingalways

PS:我建议您在完成构思(约Android模式)后阅读ViewHolder&#34;中的最佳做法。