5

请参考这张图片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 种类型的数据在我的列表视图中输入了这些值:默认情况下输入第一个适配器类型(在 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 将第三个 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() 时,它不起作用......代码没有崩溃(日志 cat 中没有红线)。代码未在 llist_view_element 的单击中执行

谢谢,阅读我的问题。

4

3 回答 3

11

您在 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>
于 2013-06-04T10:24:47.123 回答
9

您可以尝试以下几件事:-

  1. 如果列表视图项中有任何按钮(或复选框)或任何元素处理单击事件,则对每个元素执行此操作:-

    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") ;  
    }  
    });
    
于 2013-06-04T09:25:49.387 回答
1

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

PS:Android当你完成你的想法(关于ViewHolder模式)时,我建议你阅读“最佳实践”。

于 2013-06-04T09:48:51.300 回答