ListView有两个按钮

时间:2011-04-26 12:05:13

标签: android

我正在尝试使用每行上的两个按钮创建一个listView。我有一个适配器,其中声明了我的列表的按钮和其余视图。我的问题是我无法从主要活动中触发按钮。我认为下面的代码应该可以工作,但事实并非如此。

  public class Zmenu extends Activity {

   final EfficientAdapter Myadapter=new EfficientAdapter(this);

    final ListView l1 = (ListView) findViewById(R.id.ListView01);

    l1.setAdapter(Myadapter);

    l1.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                            long arg3) {
                    switch(arg1.getId()) {
            case R.id.Button1 :
                    //do this block
                break;
        case R.id.Button2 :
                   //do this block
                break;
        }
}});
}

在我的主要活动中如何解雇关键听众时,任何人都可以帮助我解决我的错误吗?

2 个答案:

答案 0 :(得分:1)

您需要让按钮中的事件渗透到父列表视图(请参阅How to pass the onClick event to its parent on Android?)或您EfficientAdapter的{​​{1}}函数中,您需要注册监听器使用项目中的每个按钮。

答案 1 :(得分:0)

编辑:您没有正确的代码布局。您需要在onCreate函数中实现您的代码

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);//here goes your layout

        final EfficientAdapter Myadapter=new EfficientAdapter(this);

        final ListView l1 = (ListView) findViewById(R.id.ListView01);

        l1.setAdapter(Myadapter);

        l1.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                switch(arg1.getId()) {
                        case R.id.Button1 :
                            //do this block
                            break;
                        case R.id.Button2 :
                            //do this block
                            break;
                    }
                }
          });
 }