2012-02-16 87 views
2

现状:OnClick事件ListView中列有两个按钮

  • 我有一个ListView我自己ListAdapter。我有两个Buttons

我试图实现onClick方法两个Buttons,但我没有找到合适的解决方案。这是从我的ListAdaptergetView方法与我的两个Buttons

public View getView(final int groupPosition, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
       convertView = inflater.inflate(R.layout.modul_item, null); 
     } 

     TextView tv = (TextView) convertView.findViewById(R.id.modul_title); 
     tv.setText(modul_overviewActivity.getvalue().get(groupPosition)); 

     Button Button_1 = (Button)convertView.findViewById(R.id.button1); 
     Button Button_2 = (Button)convertView.findViewById(R.id.button2); 

    return convertView; 
} 
  • 在我OnCLickListeners我想改变这显示在ListViewObjects的参数。
  • 将显示Objects的名称,但它们还有几个参数(变量),我想在另一个Activity中编辑它。
  • 这个Activity应该打开,如果我点击其中一个Buttons
+0

是C#?请您以某种方式指定语言(无论是在文本中还是在标签中)。谢谢! – CiccioMiami 2012-02-16 16:25:58

+1

它是关于android,所以它是java! – OnClickListener 2012-02-16 16:27:09

+0

好吧,这不是一个声明,你也可以用C#或PHP在Android中编程。 – CiccioMiami 2012-02-16 16:33:52

回答

2

我没有完全理解你想在你的按钮听众做的,但检查这个代码是什么:

public View getView(final int groupPosition, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
       convertView = inflater.inflate(R.layout.modul_item, null); 
     } 

     TextView tv = (TextView) convertView.findViewById(R.id.modul_title); 
     tv.setText(modul_overviewActivity.getvalue().get(groupPosition)); 

     Button Button_1 = (Button)convertView.findViewById(R.id.button1); 
     Button_1.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
        //this is how you start a new Activity(i guess you want this for editing the details) 
      Intent i = new Intent(List4.this, DetailsAct.class);    
        startActivity(i); 
       } 

      }); 
     Button Button_2 = (Button)convertView.findViewById(R.id.button2); 

    return convertView; 
} 

这仅仅是开始一个新的活动,意图可以携带更多的数据,以新的活动所以你可以发送其他重要的信息(如元素的位置来计算的东西,这取决于什么样的数据和如何存储它)。

+0

我了解如何开始一项新活动,我可以从其他活动中完成。但我的ListAdapter当然是一个额外的类,如下所示:'public class modul_ListAdapter extends BaseAdapter implements OnClickListener {...}' 适配器类不知道'startActivity(i)'。 你有什么想法如何解决这个问题? – OnClickListener 2012-02-17 16:56:32

+0

@ user1206662修改您的'modul_listAdapter'构造函数,以便您还可以使用'Context'对象并将其存储在私有变量中,如'ctx'。然后在创建适配器的活动中,您可以在适配器构造函数中传递“Activity”上下文(关键字“this”)。然后你可以使用'ctx.startActivity(i)'。我也看到你使用'LayoutInflater',所以你已经有了某个地方(可能是构造函数)一个上下文引用(我不知道你的整个适配器类的代码) – Luksprog 2012-02-17 17:07:49

+0

它的工作原理!我并没有真正理解'Context'的含义,但现在很明显!非常感谢! :) – OnClickListener 2012-02-17 17:29:14

0

如果您使用xml作为按钮,请将其添加到android:onClick="onClick"

+0

好的,谢谢!但我的主要活动如何知道在哪个listview行中单击了按钮? – OnClickListener 2012-02-16 16:57:33

0

写一个公共方法在活动像

public void onClick(View v) { 
..... 
}