我有自定义ListView
,我的ListView
包含一个button
,如果我们点击按钮我想要使用某些数据进行另一项活动。我使用了以下代码,
holder.mMore.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == event.ACTION_DOWN){
Intent moreIntent=new Intent(getContext(),SelectItemDesp.class);
v.getContext().startActivity(moreIntent);
}
return false;
}
});
显示错误。请帮助我
答案 0 :(得分:1)
我假设您已经为ListView适配器编写了一个类。让我们快速命名这个类:MyListViewAdapter。在这个类中,你很可能有一个构造函数。它看起来像这样:
public MyListViewAdapter (Context context, ArrayList<String> myList) {
super (context, R.layout.my_layout, R.id.my_text_view, myList);
现在上下文是启动新Activity所需的内容,因为扩展ArrayAdapter的ListView适配器无法启动Activity,因为它不是从Activity类派生的。那么这就是你如何开始一个活动:
context.startActivity(context, GoToClass.class);
只需确保在代码中添加一个全局但私有的变量(private Context context
)并将其添加到构造函数this.context = context
中,如果创建对象,则必须放置MyListViewAdapter m = new MyListViewAdapter(CurrentClass.this, myListFullOfStrings);
< / p>
答案 1 :(得分:0)
替换
Intent moreIntent=new Intent(getContext(),SelectItemDesp.class);
v.getContext().startActivity(moreIntent);
使用
Intent lObjIntent = new Intent(getApplicationContext(), SelectItemDesp.class);
startActivity(lObjIntent);
finish();
答案 2 :(得分:0)
我也在使用customlistview,并且在listview中也有一个删除按钮,我做了类似下面的事情,它对我有用。
有一件事我的课程扩展了ArrayAdapter
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
if(convertView == null)
{
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.row_layout_mymedicine, null);
holder.btnDelete = (Button)convertView.findViewById(R.id.btnDelete);
holder.btnDelete.setOnClickListener(this);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder)convertView.getTag();
}
return convertView;
}
if(convertView == null)
{
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.row_layout_mymedicine, null);
holder.btnDelete = (Button)convertView.findViewById(R.id.btnDelete);
holder.btnDelete.setOnClickListener(this);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder)convertView.getTag();
}
return convertView;
}
然后onClick()方法我做了
答案 3 :(得分:0)
您正在从匿名内部类调用新活动,this
之类的内容只会引用此匿名类。
使用MyClass.this
作为Vinayak建议,如果错误仍然存在,请在此处发布logcat
答案 4 :(得分:0)
试试这个。它应该工作
Intent intent = new Intent(context, SelectItemDesp.class);
context.startActivity(intent);