Java Android:onItemLongClick for listView没有响应

时间:2016-08-02 14:23:45

标签: java android listview listener

我正在开发Android应用程序。

我想显示联系人列表(使用 listview ),我想添加2个提醒对话框:一个按onItemClickListener,另一个按onItemLongClickListener

onItemLongClickListener永远不会被称为,只是onItemClickListener。 我已经为另一个应用程序做了它,但在这里它没有工作,我不知道为什么:/

我的代码:

public class ContactActivity extends AppCompatActivity {
    private ListView listView;
    private ContactAdapter adapter; //my adapter
    private ArrayList<Contact> contacts; //my list of contacts

    //...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contact);

        //here i init my "listView" and "contacts"

        adapter = new ContactAdapter(this, contacts);
        listView.setAdapter(adapter);
        adapter.notifyDataSetChanged();

        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                Log.e("longClick", "ok");
                return true;
            }
        });

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
           @Override
           public void onItemClick(AdapterView<?> a, View v, final int position, long id) {
              //here i display a Dialog
           }
        });



    //some code

所以,当我&#34;简单点击&#34;在列表的项目上,出现对话框(确定)。 但是,当我长时间点击&#34;在列表的项目上,对话框出现,我没有看到日志......

(我用于ListView的项目只有2个EditText)

PS:我的listView显示的XML

<?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="match_parent"
   android:background="@color/white">

   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:weightSum="100"
       android:id="@+id/screen">

       <FrameLayout
           android:layout_width="match_parent"
           android:layout_height="wrap_content">

           <ImageView
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:id="@+id/imageView4"
               android:background="@drawable/w_aff2" />
       </FrameLayout>

       <LinearLayout
           android:orientation="vertical"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:weightSum="100">

           <LinearLayout
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:layout_weight="20"
               android:weightSum="100">

               <ListView
                   android:layout_width="match_parent"
                   android:layout_height="match_parent"
                   android:id="@+id/listView" />
           </LinearLayout>

           <FrameLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="80">

           <LinearLayout
               android:orientation="horizontal"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:weightSum="3">

               <FrameLayout
                   android:layout_width="match_parent"
                   android:layout_height="match_parent"
                   android:layout_weight="1"
                   android:layout_margin="14dp">

                   <ImageButton
                       android:layout_width="wrap_content"
                       android:layout_height="wrap_content"
                       android:id="@+id/button_back"
                       android:layout_gravity="center"
                       android:background="@drawable/grey_button"
                       android:src="@drawable/i_back_blue" />
               </FrameLayout>

               <FrameLayout
                   android:layout_width="match_parent"
                   android:layout_height="match_parent"
                   android:layout_weight="1"
                   android:layout_margin="14dp">

               </FrameLayout>

               <FrameLayout
                   android:layout_width="match_parent"
                   android:layout_height="match_parent"
                   android:layout_weight="1"
                   android:layout_margin="14dp">

                   <ImageButton
                       android:layout_width="wrap_content"
                       android:layout_height="wrap_content"
                       android:id="@+id/button_add"
                       android:src="@drawable/i_add_blue"
                       android:background="@drawable/grey_button"
                       android:layout_gravity="center" />
               </FrameLayout>
           </LinearLayout>
       </FrameLayout>

   </LinearLayout>

</LinearLayout>
   </RelativeLayout>

PS2:不要看日志,我把它作为例子,但如果我把其他任何事情都没有发生,只是对话框出现......

PS3:我用于listView的每个项目的XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:id="@+id/item_screen"
   android:background="@color/white">

   <LinearLayout
       android:orientation="horizontal"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:weightSum="3"
       android:id="@+id/item_layout"
       android:layout_marginRight="16dp"
       android:layout_marginLeft="16dp"
       android:padding="7dp">

       <FrameLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="1"
           android:id="@+id/layout_label">

           <TextView
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:text="New Text"
               android:id="@+id/item_label"
               android:layout_weight="1"
               android:textColor="@color/grey_dark"
               android:gravity="center_vertical"
               android:textStyle="bold"
               android:textSize="16dp" />
       </FrameLayout>

       <FrameLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="1"
           android:id="@+id/empty_layout">

       </FrameLayout>

       <FrameLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="1"
           android:id="@+id/layout_value"
           android:paddingTop="8dp"
           android:paddingBottom="8dp">

           <TextView
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:text="New Text"
               android:id="@+id/item_value"
               android:textColor="@color/grey_dark"
               android:textStyle="bold"
               android:gravity="center_vertical|center_horizontal"
               android:textSize="16dp" />
       </FrameLayout>

   </LinearLayout>

</LinearLayout>

我的监听器上有一个onSwipeRight(),它阻止了onItemLongClickListener

这是阻止侦听器的代码

listView.setOnTouchListener(new OnSwipeTouchListener(getApplicationContext()) {
     public void onSwipeRight(){
         //some code
     }
});

非常感谢ddb的时间:)

2 个答案:

答案 0 :(得分:1)

为什么要传递new AdapterView.OnItemLongClickListener

请改为使用以下内容

listView.setOnItemLongClickListener(new OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                    Log.e("longClick", "ok");
                    return true;
                }
            });

答案 1 :(得分:0)

不要在java中设置listView.setLongClickable(true);listView.setClickable(true);

无论

android:longClickable="true"
android:clickable="true"

在xml中