java - 如何在 Android 中处理长按

标签 java android long-click

我是 Android 开发新手。我处理点击的方式是在按钮的 list 文件中设置 android:onClick 属性。我想知道的是一般情况下处理长时间点击的最佳方式。我已经阅读了关于实现 onLongClick() 的内容,但是有没有一种方法可以使用处理程序(如上所示),而不必扩展 View?这将非常有帮助,因为我宁愿不必使用扩展的 View 类重建我的整个项目。

编辑

我应该澄清一下。我有一个 ListView,我想设置当我长按列表中的一个元素时会发生什么。列表中的每个元素都是一个 TextView。根据其中一个答案,我添加了以下代码,现在我强制关闭了:

public class TwitterActivity extends ListActivity {
    List<String> tweets = new LinkedList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setListAdapter(new ArrayAdapter<String>(this, R.layout.layout, tweets));

            TextView view = (TextView) findViewById(R.id.ListTemplate);
            view.setOnLongClickListener(new OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    Toast toast = new Toast(TwitterActivity.this);
                    toast.setText("LongClick");
                    toast.show();

                    return true;
                }
            });

    //...
    }
}

最佳答案

对于 ListActivity,如果您想响应对列表元素的长按,请执行以下操作:

public class TwitterActivity extends ListActivity {
    List<String> tweets = new LinkedList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setListAdapter(new ArrayAdapter<String>(this, R.layout.layout, tweets));
            ListView lv = getListView();
            lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){ 
                   @Override 
                   public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) 
                  { 
                       Toast.makeText(TwitterActivity.this, "LongClick", Toast.LENGTH_LONG).show();
                  } 
             }); 

    }
}

对于常规 Activity ,您可以这样做:

public class MyActivity extends Activity implements View.onLongClickListener {

   View myView = null;


   public void onCreate(Bundle state) {
      super.onCreate(state);
      setContentView(R.layout.my_activity);
      myView = findViewById(r.id.my_view);
      myView.setOnLongClickListener(this);
   }

   @Override
   public void onLongClick(View v) {
    //long clicked
   }

}

关于java - 如何在 Android 中处理长按,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589895/

相关文章:

java - XML 中按钮的换行符不受尊重,但它适用于 Java 代码

java - 在 Android 上录制实时 OpenCV 处理

android推送通知显示空白内容

android - 一次设置多个按钮的 setonlongclicklistener

android - 在长按 View 上显示可供性/悬停/工具提示

android-layout - 接收长按/单击 android 中的线性布局?

java - 为什么不能将 com.sun.xml.internal.messaging.saaj.soap.impl.TextImpl 转换为 javax.xml.soap.SOAPBodyElement

java - MapBox Android SDK : How to download offline map during app installation?

java - 是否存在从 Eclipse 中的同一代码库维护免费和专业应用程序版本的约定?

android - 在样式中使用 App 命名空间