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

标签 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);
}

我循环遍历数组列表中的所有组项目。并将按钮添加到 ListView 中。 Thiw 效果很好。

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

最佳答案

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

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);
}

关于java - Android独特的动态添加按钮上的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29611060/

相关文章:

java - 如何避免将 @RefreshScope 放在应用程序中的多个 bean 上

android - 我的 Android 应用程序的唯一 ID

android - 获取多个艺术家的专辑

android - Android EditText 上的 logcat 错误

java - 如何统计Java应用运行时哪个类被使用了多少次

java - 将文件移动到另一个文件夹时出现问题

java - 在Scala中使用Java API查询Couchbase中的 View 抛出超时异常

java - Log4J 转换说明符 "%l"不打印整个堆栈跟踪

android - 从一个应用程序访问另一个应用程序的数据库

android - 如何在android中点击按钮时构造一个json对象