如何区分ListView中的按钮

时间:2014-06-01 14:32:09

标签: java android button android-listview

我想创建一个连接列表,并为用户提供连接到其中任何一个连接的选项。

<TextView
    android:id="@+id/tvName"
    android:layout_width="225dp"
    android:layout_height="38dp"
    android:textSize="25sp" />

<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="connect"
    android:text="connect" />

这是列表中每个项目的基本结构。创建列表后,在“连接”功能中,我无法确定列表中的哪个按钮称为它。我必须知道要连接到该特定连接。谁能帮助我知道点击按钮的位置?先感谢您。

3 个答案:

答案 0 :(得分:0)

您可以在自定义适配器的getView方法中设置onClick事件。

   public View getView(final int position, View convertView,
                    ViewGroup parent) {
    LayoutInflater inflater = getLayoutInflater();
                View row = inflater.inflate(R.layout.vehicals_details_row, parent,
                        false);
    Button btnView = (Button)  row.findViewById(R.id.button1);
    btnView .setOnClickListener(new OnClickListener() {

     @Override
       public void onClick(View v) 
       {
           // Your code that you want to execute on this button click
       }

    });

更多信息请查看链接Handling Button clicks in a ListView Row

答案 1 :(得分:0)

使用OnItemClickListenerListView添加setOnItemClickListener。监听器具有以下回调函数:

onItemClick(AdapterView<?> parent, View view, int position, long id)

position是你想要的,我猜)

答案 2 :(得分:0)

您基本上有两种选择:

1)在适配器中,附加到每个按钮(在视图中)一个监听器,引用列表中的正确项(我假设这些项是(发明的)类ConnectionItem的实例):

 View itemView = .... //view inflated here
 ConnectionItem  connItem = ..//the current connection
 Button button = (Button) itemView.findViewById(R.id.button1);
 button.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
           Log.i(YOUR_TAG, "clicked on item:"+connectionItem.getName());
      }
 }); 

2)在适配器中,您可以使用项目本身为视图设置标记:

 View itemView = .... //view inflated here
 ConnectionItem  connItem = ..//the current connection
 Button button = (Button) itemView.findViewById(R.id.button1);
 button.setTag(connItem)

然后在你的活动中:

 public void connect(View view) {
        ConnectionItem  connItem = (ConnectionItem)view.getTag();
        Log.i(YOUR_TAG, "clicked on item:"+connectionItem.getName());
 }

希望这有帮助