2011-10-26 49 views
5

我想在我的android应用程序上编程创建按钮取决于我有多少项目在我的sqlite数据库。按钮在那里,但我的问题是在每个按钮上设置onClick,因为我想在用户单击按钮时显示不同的内容。我使用这个代码现在:安卓创建按钮编程方式问题

for(cursorCol.move(0); cursorCol.moveToNext(); cursorCol.isAfterLast()){ 
      Id = Integer.parseInt(cursorCol.getString(cursorCol.getColumnIndex("id"))); 
      Log.i("Id","Id : "+Id); 
       titleButton = cursorCol.getString(cursorCol.getColumnIndex("title")); 
      Log.i("titleButton","titleButton : " + titleButton); 
      elemOrder1 = Integer.parseInt(cursorCol.getString(cursorCol.getColumnIndex("elemOrder"))); 
       Log.i("elemOrder1 ","elemOrder1 : " + elemOrder1);  

       btn = new Button(this); 
        btn.setText(" " + titleButton + " "); 
        btn.setId(Id); 
        btn.setTextColor(Color.parseColor("#000000")); 
        btn.setTextSize(12); 
        btn.setPadding(10, 10, 10, 10); 
        btn.setBackgroundResource(R.drawable.gray_button); 
        btnlayout.addView(btn,params); 

        btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
      infoCard.removeAllViews(); 

      for(int i=0;i<=cursorCol.getCount();i++){ 

      Log.i("","titleButton : "+titleButton); 

       } 
      } 
} 

但问题是,当我点击按钮,它只有最后titleButton显示。其实我不需要显示titleButton,我只是做了测试。任何想法如何为每个按钮创建不同的onClick方法?

回答

6

我认为问题在于这行代码:

btn = new Button(this); 

你一遍又一遍在循环编辑同一个按钮,而不是实际上可以创造一个新的。要创建一个新的,你需要这样做:

Button new_btn = new Button(this); 

这将创建一个全新的每一次迭代你的for循环。

+1

这是正确的答案!非常感谢!我没有意识到我每次都在使用同一个按钮。 –

+0

没问题。我很乐意提供帮助。 – NotACleverMan

+1

他确实用“新”创建了一个新实例,所以这不成问题。 –