2015-11-27 98 views
2

TextView和Button以编程方式创建并添加到预先存在的垂直布局,使其看起来像垂直的视图列表。这些视图仅基于用户将数据输入到edittext中以及将数据保存到ArrayList中而创建。将onClick添加到以编程方式创建的按钮

如何将onClick函数添加到以编程方式创建的“垃圾”按钮中,以允许它们删除与其关联的视图。

public static ArrayList<String> deckNameArray = new ArrayList<String>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    LinearLayout mainLayout = (LinearLayout)findViewById(R.id.mainLayout); 

    for(int i = 0; i < deckNameArray.size(); i++) 
    { 
     LinearLayout layout = new LinearLayout(this); 
     if ((i % 2) == 0) { 
      layout.setBackgroundColor(Color.CYAN); 
     } else { 
      layout.setBackgroundColor(Color.WHITE); 
     } 
     layout.setOrientation(LinearLayout.HORIZONTAL); 
     LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
     layout.setLayoutParams(layoutParams); 
     layout.setPadding(10, 5, 10, 5); 
     layout.setWeightSum(5); 
     mainLayout.addView(layout); 

     LinearLayout.LayoutParams textViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT, 4f); 
     TextView deckName = new TextView(this); 
     deckName.setText(deckNameArray.get(i)); 
     deckName.setTextColor(Color.BLACK); 
     deckName.setTextSize(18); 
     deckName.setGravity(Gravity.CENTER_VERTICAL); 
     deckName.setLayoutParams(textViewParams); 
     layout.addView(deckName); 

     LinearLayout.LayoutParams imageButtonParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT, 1f); 
     ImageButton remove = new ImageButton(this); 
     remove.setImageResource(R.mipmap.trash); 
     if ((i % 2) == 0) { 
      remove.setBackgroundColor(Color.CYAN); 
     } else { 
      remove.setBackgroundColor(Color.WHITE); 
     } 
     remove.setLayoutParams(imageButtonParams); 
     layout.addView(remove); 
    } 
+0

那里是一个非常好的答案,这个已经: http://stackoverflow.com/questions/4401028/dynamically-creating-buttons-and-setting-onclicklistener – raddevus

回答

3

您可以在任何视图中设置的点击监听器,使用类似于下面的示例代码:

View myView; 

myView.setOnClickListener(new OnClickListener() { 
    @Override public void onClick(View v) { 
     // TODO your logic here 
    } 
} 
+0

如果你创建了多个视图,然后使用'myView.setId(index)'设置一个id给它,并在里面' onClickListener'获得id来区分这些视图 – Prabs

相关问题