我正在努力尝试实现OnLongClick功能 - 我无法理解添加侦听器的位置以及定义结果方法。
我使用的实现使用了一个适配器 - 并且没有onClickListener,但是工作得很好。任何人都可以建议在哪里/如何实现OnLongClick监听器
我不需要列表中的每个项目都可以执行不同的操作 - 只需要屏幕上的任何项目来获取长按
public class CombChange extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ListEdit(this, symbols));
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
String selectedValue = (String) getListAdapter().getItem(position);
if (lastPressed.equals(selectedValue) ){
count++;}
}
public class ListEdit extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
public ListEdit(Context context, String[] values) {
super(context, R.layout.activity_comb_change, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.activity_comb_change, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
textView.setText(values[position]);
// Change icon based on name
String s = values[position];
if (s.equals("a")) {
imageView.setImageResource(R.drawable.a);
return rowView;
}
}
答案 0 :(得分:2)
试试这个:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
v.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
String selectedValue = (String) getListAdapter().getItem(position);
if (lastPressed.equals(selectedValue) ){
count++;}
return false;
}
});
}
答案 1 :(得分:1)
遗憾的是,ListActivity
没有类似onListItemClick()函数的受保护onListItemLongClick()
方法。
相反,您可以将setOnLongClickListener()
添加到适配器的View
功能中的顶级布局项(或任何getView()
)。
示例强>:
myView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// Do something here.
return true;
}
});
警告,您放入列表项的OnLongClickListener
可能会隐藏您已经为列表工作的onListItemClick()
功能。如果是这种情况,您还必须将setOnClickListener()
添加到getView()
并改为使用它。
答案 2 :(得分:0)
rowview.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View arg0) {
//Do your stuff here
return false;
}
});