我是 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/