5

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

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

有什么帮助吗?

谢谢!

4

3 回答 3

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;
        }
    }
}
于 2013-04-02T16:18:06.563 回答
1

在列表项中为 the和 the定义单独onClick()的方法并非不可能。这正是您必须做的,而不是为您的.ImageViewTextViewonClick()ListView

onClick()在您的适配器中getView()为每个项目实现方法。

于 2013-04-02T16:16:42.757 回答
0

一种选择是为单独的元素包含一个 onClick 方法。假设您已经在 XML 中构建了自定义行,很容易在 onClick 字段中添加一个方法,将该元素(例如图像)设置为允许点击(如果还没有的话)并在您的类中定义该方法. 然后,如果该被点击,listview 点击处理程序触发,但如果元素被点击(图像),那么它自己的 onClick 方法被触发。

于 2013-04-02T16:18:32.457 回答