Android onListItemClick()和#x2B;ListView上的可单击图像

Android onListItemClick()和#x2B;ListView上的可单击图像,android,android-listview,listadapter,clickable-image,Android,Android Listview,Listadapter,Clickable Image,我希望我的listitem仍然响应onListItemClick(),但另外,我希望raw中的一个额外图像具有自己的单击事件。为图像定义onClickListener的经典方法不起作用。什么。我已锁定定义新适配器类,我从未使用过自定义适配器。我想浏览选项卡,onListItemClick()转到选项卡1,然后在图像上单击转到选项卡2。它适用于onListItemClick(),但当我为图像添加第二次单击事件时,应用程序在MySimpleAdapter.getView()上出现NullPointe

我希望我的listitem仍然响应
onListItemClick()
,但另外,我希望raw中的一个额外图像具有自己的单击事件。为图像定义
onClickListener
的经典方法不起作用。什么。我已锁定定义新适配器类,我从未使用过自定义适配器。我想浏览选项卡,onListItemClick()转到选项卡1,然后在图像上单击转到选项卡2。它适用于
onListItemClick()
,但当我为图像添加第二次单击事件时,应用程序在MySimpleAdapter.getView()上出现NullPointerException崩溃。谢谢你的帮助

public class ListaActivity extends ListActivity {

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list);

    MySimpleAdapter adapter = new MySimpleAdapter(this, elem, R.layout.list_item,
            new String[]{"name","number","address"}, new int[]{R.id.name,R.id.num,R.id.adr});
    setListAdapter(adapter);
   }
    public class MySimpleAdapter extends SimpleAdapter{
    Context context;
    //Activity activity;
public MySimpleAdapter(Context context, ArrayList<HashMap<String, String>> elements,int layout, String [] from, int [] to ){
        super(context,el,layout,from,to);
            this.context = context;
            //this.activity = (Activity) context;
    }

    @Override
    public View getView(int position,View convertView, ViewGroup parent){
        View view = super.getView(position, convertView, parent);
        ImageView image = (ImageView)findViewById(R.id.btn);
        image.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                int tab=2;
                MyTabActivity.switchToTab(tab);
            }
        });
        return view;
    }   


@Override
protected void onListItemClick(ListView l, View v, int position, long id){
     int tab = 1;
     MyTabActivity.switchToTab(tab);
   }
 }
公共类ListaActivity扩展了ListActivity{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
mysimpledapter adapter=新的mysimpledapter(此,elem,R.layout.list_项,
新字符串[]{“name”,“number”,“address”},新int[]{R.id.name,R.id.num,R.id.adr});
setListAdapter(适配器);
}
公共类mysimpledapter扩展了simpledapter{
语境;
//活动;
public MySimpleAdapter(上下文上下文、ArrayList元素、int布局、字符串[]from、int[]to){
超级(上下文、el、布局、从、到);
this.context=上下文;
//this.activity=(activity)上下文;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
ImageView图像=(ImageView)findViewById(R.id.btn);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
int-tab=2;
MyTabActivity.switchToTab(tab);
}
});
返回视图;
}   
@凌驾
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id){
int tab=1;
MyTabActivity.switchToTab(tab);
}
}

将以下行更改为:

ImageView image = (ImageView)findViewById(R.id.btn);


Post stacktrace以及您在哪里定义选项卡?您的解决方案似乎运行良好:D您能告诉我是否可以扩展
CursorAdapter
而不是
SimpleAdapter
?我的意思是,如果我要做的唯一更改是在适配器的构造函数中?
新的SimpleCursorAdapter(这个,R.layout.item_列表,cursor,FROM,to)
谢谢!据我所知,您可以使用SimpleCursorAdapter扩展MySimpleAdapter类,然后重写相同内容的其余部分,如果这对您有帮助,请尝试。
ImageView image = (ImageView)view.findViewById(R.id.btn);