如何为自定义listView项的单独部分设置onClickListener? [Android]产品

时间:2013-04-02 16:09:46

标签: android listview onclicklistener

我为我的Android应用程序制作了一个自定义listView,我在为项目的不同部分创建单独的onClickListeners时遇到问题。 我的项目有图片和文字。我想要的是根据点击的那些开始不同的活动。

onClick()方法应该启动一个活动,这使我无法在我的DataBinder类的getView()方法中定义。 (DataBinder使用自定义布局填充我的listView)

任何帮助?

谢谢!

3 个答案:

答案 0 :(得分:9)

在自定义ListAdapter's getView方法中,您应该将onClickListeners添加到您希望对点击进行操作的不同子视图中。

关于如何实现getView方法的示例:

class CustomListAdapter extends ArrayAdapter<String> implements OnClickListener {

    public CustomListAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;

        TextView tv = (TextView) v.findViewById(R.id.textView1);
        tv.setOnClickListener(this);

        ImageView iv = (ImageView) v.findViewById(R.id.imageView1);
        iv.setOnClickListener(this);

        return super.getView(position, convertView, parent);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.textView1:
            // Do stuff accordingly...
            break;
        case R.id.imageView1:
            // Do stuff when imageView1 is clicked...
        default:
            break;
        }
    }
}

答案 1 :(得分:1)

为列表项中的onClick()ImageView定义单独的TextView方法并非不可能。这正是您必须执行的操作,而不是使用onClick()的{​​{1}}处理程序。

在适配器的ListView中为每个项目实施onClick()方法。

答案 2 :(得分:0)

一种选择是为单独的元素包含onClick方法。假设您已经在XML中构建了自定义行,在onClick字段中添加方法很简单,设置该元素(例如,图像)以允许点击(如果尚未),并在您的类中定义方法。然后,如果单击,则会触发listview单击处理程序,但如果单击该元素(图像),则会触发它自己的onClick方法。