动态添加按钮上的Android独特点击事件

时间:2015-04-13 17:07:37

标签: java android

对于我的应用程序,我基于arrayList动态地向listview添加按钮。我添加了这样的按钮:

LinearLayout ll = (LinearLayout)findViewById(R.id.groupsButtonList);

for(int index = 0; index < groupsList.size(); index++){

    Group singleGroup = groupsList.get(index);
    Button myButton = new Button(this);
    myButton.setText(singleGroup.name);
    AbsListView.LayoutParams lp = new AbsListView.LayoutParams( AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT);
    ll.addView(myButton, lp);
}

我遍历arraylist中的所有Group项目。并将按钮添加到列表视图。 Thiw很棒。

我现在想要做的是能够知道用户点击了哪个按钮/项目。 Group对象的模型还包含一个_id,如果我可以将它添加到按钮并从on按钮单击事件中获取它,那将是最好的。如果我只能获得列表中按钮的位置(例如,如果第一个返回0,则列表中的第4个按钮应返回4或3),而不是基于索引从arrayList获取它。所有的帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

实现此目的的一种方法是使用View的标记,并将OnClickListener设置为每个按钮,该按钮期望单击的视图在单击之前在其上设置该类型的标记。例如:

OnClickListener groupClickListener = new OnClickListener(){
    public void onClick(View v){
        Group clickedGroup = (Group) v.getTag();
        //DO SOMETHING
    }
};

LinearLayout ll = (LinearLayout)findViewById(R.id.groupsButtonList);

for(int index = 0; index < groupsList.size(); index++){
        Group singleGroup = groupsList.get(index);
        Button myButton = new Button(this);
        myButton.setTag(singleGroup);
        myButton.setOnClickListener(groupClickListener);
        myButton.setText(singleGroup.name);
}