【问题标题】:How can I implement Long Click Listener for listview [duplicate]如何为列表视图实现长单击侦听器 [重复]
【发布时间】:2014-04-20 07:26:39
【问题描述】:

我在各种论坛上搜索了正确的答案,但对我没有任何帮助。目前我在私有类 MyDiary 中有这段代码:

ListView list = new ListView(Monday.this);
        list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                    new EditListItemDialog(view.getContext()).show();

                return true;       
            }
        });

它不会返回错误,但 EditListItemDialog 不会打开。我在这里错过了什么?

编辑

EditListItemDialog 的代码:

package com.example.classorganizer;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

class EditListItemDialog extends Dialog implements View.OnClickListener {

private View editText;

public EditListItemDialog(Context context) {
    super(context);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.edit_text_dialog);//here is your xml with EditText and 'Ok' and 'Cancel' buttons
    View btnOk = findViewById(R.id.button_ok);
    editText = findViewById(R.id.edit_text);
    btnOk.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    ((TextView) editText).getText().toString();//here is your updated(or not updated) text
    dismiss();
}
}

XML 文件:

     <ListView
        android:layout_width="fill_parent"
                        android:gravity="center"
        android:layout_height="fill_parent"
    android:id="@android:id/list"
        android:longClickable="true"
         >

    </ListView>

并创建行:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignLeft="@+id/name"
android:layout_below="@+id/name"
xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="0dip">
<TextView android:textSize="16dip"
                                android:layout_width="wrap_content"
                            android:layout_height="29dp"
                            android:layout_marginTop="0dp"
                            android:id="@+id/name"
                            android:layout_marginRight="4dp"
                            android:text="Diary Title"
                            android:textStyle="bold"
                            android:longClickable="true" />



</RelativeLayout>

【问题讨论】:

  • 我在这个线程中搜索了解决方案,但没有任何帮助。
  • @lisoslaw 已删除,因为您的侦听器运行良好,但很可能您的 Dialog 未正确实现。
  • 什么是EditListItemDialog?除非您为此显示代码,否则无法说出它为什么不打开。
  • @Ragnar 你能指导我如何正确实现对话框吗?
  • @Squonk 我添加了代码...

标签: android onlongclicklistener


【解决方案1】:

假设您使用的是ListActivity,您应该更改以下行(从您的第一个代码块开始)...

ListView list = new ListView(Monday.this);

...成为...

ListView list = getListView();

然后您可以为其设置监听器。

【讨论】:

  • 此更改有效。它现在长按并打开对话框。但是当我尝试更改对话框中的值时,更改不会生效...
猜你喜欢
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多