请参阅此图片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
时,代码未执行感谢您阅读我的问题。
答案 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)
以下是您可以尝试的一些事项: -
如果listview项目中有任何按钮(或复选框)或任何处理click事件的元素,则对每个元素执行此操作: -
android:focusable = "false"
android:focusableInTouchMode = "false"
尝试设置此
list.setItemsCanFocus(false);
覆盖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;中的最佳做法。