【问题标题】:onListItemClick() + Clickable image on ListViewonListItemClick() + ListView 上的可点击图片
【发布时间】:2011-12-06 11:15:54
【问题描述】:

我希望我的列表项仍然响应onListItemClick(),但另外我希望原始图像中的额外图像具有它自己的点击事件。经典方式,为图像定义onClickListener 不起作用。什么I have found is that I have to define my own listadapter and override getView() method。我已锁定定义新的适配器类,我从未使用过自定义适配器。我想浏览选项卡,onListItemClick() 转到选项卡 1,在 ImageClick 上转到选项卡 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);
   }
 }

【问题讨论】:

  • 发布堆栈跟踪以及您在哪里定义选项卡?

标签: android android-listview listadapter clickable-image


【解决方案1】:

从以下行更改:

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

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

【讨论】:

  • 您的解决方案似乎工作正常 :D 您能否告诉我是否可以扩展 CursorAdapter 而不是 SimpleAdapter?我的意思是,如果我唯一要做的改变是在适配器的构造函数中? new SimpleCursorAdapter(this, R.layout.item_list, cursor, FROM, TO); 谢谢!
  • 据我了解,您可以使用 SimpleCursorAdapter 扩展 MySimpleAdapter 类,然后重写其余部分,如果这对您有帮助,请尝试。
猜你喜欢
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多