ImageView onClick 方法

Posted

技术标签:

【中文标题】ImageView onClick 方法【英文标题】:ImageView onClick method 【发布时间】:2015-12-03 09:17:40 【问题描述】:

我有一个活动MyActivityListView,她的 xml 文件是这个http://pastebin.com/B2thprhT。

该活动没有什么特别的,当我们点击一​​行时调用另一个活动传递元素。此 xml 的行是使用此其他 xml 文件 http://pastebin.com/H321gRP8 构建的。

在与活动相关的广告中,onCreate() 方法上的第一个 xml 文件出现在这一行:listView.setAdapter(new MyListViewAdapter(getApplicationContext()));MyListViewAdapter 是以这种方式制作的

public class MyListViewAdapter extends BaseAdapter 
    List<TestTable> testTableArrayList;
    private LayoutInflater inflater;
    private Context context;
    private DatabaseHelper databaseHelper;

    public MyListViewAdapter(/*ArrayList<TestTable> testTableArrayList,*/ Context context) 
//        this.testTableArrayList = testTableArrayList;
        this.context = context;
        this.databaseHelper = new DatabaseHelper(context);
        this.testTableArrayList = databaseHelper.getValues();
        inflater = ( LayoutInflater )context.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    

    /**
     * Ritorna il numero degli elementi presenti nell'ArrayList
     * @return numero di elementi nell'ArrayList
     */
    @Override
    public int getCount() 
//        return 0;
        return testTableArrayList.size();
    

    /**
     * Restituisce l'oggetto in posizione position
     * @param position = posizione dell'oggetto che verra' restituito
     * @return oggetto in posizione position
     */
    @Override
    public Object getItem(int position) 
//        return null;
        return testTableArrayList.get(position);
    

    @Override
    public long getItemId(int position) 
        return position;
    

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
//        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View row = inflater.inflate(R.layout.custom_single_row_list_view, null);

        TextView zero = (TextView) row.findViewById(R.id.txtIdOnCustomView);
        TextView uno = (TextView) row.findViewById(R.id.txtPrimoValoreOnCustomView);
        TextView due = (TextView) row.findViewById(R.id.txtSecondoValoreOnCustomView);
        TextView tre = (TextView) row.findViewById(R.id.txtTerzoValoreOnCustomView);

        TestTable temp = testTableArrayList.get(position);

        zero.setText(String.valueOf(temp.getId()));
        uno.setText(temp.getVal1());
        due.setText(temp.getVal2());
        tre.setText(temp.getVal3());

//        TextView uno

        return row;
    
`

如您所见,在第二个 xml 文件中存在一个可单击的 ImageView,但我不明白单击时在何处插入关联的方法,因为如果我在 MyListViewAdapter 类上插入该方法,它们会返回一个错误,如果我在ActivityListView 类上插入它们会返回错误。 非常感谢并原谅我的英语,这是我第一次用英语问问题:)

【问题讨论】:

只需使用 findViewById() 来获取对 ImageView 的引用,就像使用 TextView 一样,并在代码中设置 OnClickListener。 我在哪里放置 findViewById() 方法?在 ActivityListView 类中?如果我将代码放在 ActivityListView 的 onCreate 方法中,则会出现此错误:java.lang.RuntimeException:无法启动活动 ComponentInfoorg.phate.formazioneandroid1.formazioneandroid1/org.phate.formazioneandroid1.formazioneandroid1.ListViewActivity:java.lang。 NullPointerException: .... 原因:java.lang.NullPointerException: 尝试在空对象引用上调用虚拟方法 'void android.widget.ImageView.setOnClickListener(android.view.View$OnClickListener)' 从相同布局获取 TextViews 的相同位置。 它运行!非常感谢! 【参考方案1】:

只需使用findViewById() 获取对ImageView 的引用,就像使用TextViews 一样,并在代码中设置OnClickListener。在您获得TextViews 的同一个地方执行此操作。

【讨论】:

以上是关于ImageView onClick 方法的主要内容,如果未能解决你的问题,请参考以下文章

RecyclerView:如何捕获 ImageView 上的 onClick?

在android [copy]中没有设置从相机到imageview的图像

如果为空,则显示 imageview onclick 并在没有 imageview 的情况下发布

iOS 7 上的 cell.imageView.image 和 indentationLevel

隐藏时,Android ImageView会引发OnClick事件

如何添加onclick imageview网址以及如何从firebase更新网址