给listview的button设置OnClick Listener事件

在屏幕中有一个list view。每一个list item包含两个text view和一个按钮。
点击按钮时,我想用当前选中行的行序号去Vector里面取得一些数据。
这是List Custom Adapter

private class CustomAdapter extends ArrayAdapter<ServicesItems> {

    public CustomAdapter(Context context, int resource,
            int textViewResourceId, List<ServicesItems> objects) {
        super(context, resource, textViewResourceId, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        TextView item = null;
        TextView description = null;
        Button subNowBtn;

        ServicesItems ii = getItem(position);

        if (null == convertView) {
            convertView = mInflater.inflate(
                    R.layout.list_of_servics_item_2, null);

            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        }
        holder = (ViewHolder) convertView.getTag();
        // cat_name = holder.gettitle();

        Resources resources = getResources();

        ServicesItems bean1 = (ServicesItems) servicesVector
                .elementAt(position);

        String cat_name_str = bean1.getService_name().toString();
        String descreption = bean1.getDescription().toString();


        item = holder.getItem();
        item.setText(bean1.getDescription());

        description = holder.getDescription();
        description.setText(bean1.getService_name());

         subNowBtn=holder.getSubButton();

        return convertView;
    }

    private class ViewHolder {
        private View mRow;
        private TextView description = null;
        private TextView item = null;
        private Button sub = null;

        public ViewHolder(View row) {
            mRow = row;
        }

        public TextView getDescription() {
            if (null == description) {
                description = (TextView) mRow
                        .findViewById(R.id.category_tv);
            }
            return description;
        }

        public TextView getItem() {
            if (null == item) {
                item = (TextView)       
           mRow.findViewById(R.id.descreption_tv);
            }
            return item;
        }

        public Button getSubButton(){
            if(null==sub){
                sub=(Button)findViewById(R.id.subscribe_now_btn);


            }
            return sub;
        }

    }

}

可是这段代码实现不了,请问如何获取数据呢?

3个回答

我的是这样,你改改

public View getView(final int position, View convertView, ViewGroup parent) {
    final Holder holder;
    LayoutInflater inflater = LayoutInflater.from(context);
    MsgInfo info = itemlist.get(position);
    if (convertView != null) {
        holder = (Holder) convertView.getTag();
    } else {
        holder = new Holder();
        convertView = inflater.inflate(R.layout.listitem, null);
        holder.deletebtn = (Button) convertView
                .findViewById(R.id.item_deletebtn);
        holder.hadreadbtn = (Button) convertView
                .findViewById(R.id.item_readbtn);


        holder.msgtext = (TextView) convertView.findViewById(R.id.item_text);
        holder.timetext = (TextView) convertView
                .findViewById(R.id.item_timetext);
        String msg = "";
        holder.msgtext .setText(msg);
        holder.timetext.setText(info.getCtime());
        convertView.setTag(holder);
    }
    OnClickListener listener = new OnClickListener() {
        public void onClick(View v) {
            if (v == holder.deletebtn) {
                //你的操作
            }
            if (v == holder.hadreadbtn) {
                //你的操作
            }
            if(v==holder.msgtext){
                //你的操作
            }
        }
    };
    holder.deletebtn.setOnClickListener(listener);
    holder.hadreadbtn.setOnClickListener(listener);
    holder.msgtext.setOnClickListener(listener);
    return convertView;
}

class Holder {
public Button deletebtn;
public Button hadreadbtn;
public TextView msgtext;
public TextView timetext;
}

LiDaming_and
LiDaming_and 你可以把下边的代码也编辑一下哦。
接近 7 年之前 回复

重写一个BaseAdapter类
在这个类的getview方法中写事件就好了,唯一不同的是
初始化控件的时候,记得是要以listview的item的布局文件来初始化
否则不能获取控件
具体如下

convertView = getLayoutInflater().inflate(R.layout.XXX, null);
convertView.findViewById(R.id.XXX);

在 Adapter 中试试这样

@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
    View row = convertView;
    YourWrapper wrapper = null;

    if (row == null)
    {
        row = inflater.inflate(R.layout.layout, parent, false);
        wrapper = new YourWrapper (row);
        row.setTag(wrapper);
    }
    else
        wrapper = (YourWrapper) row.getTag();

    wrapper.getButton().setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // What you want
        }
    });

    return row;
}

wrapper 类:

public class YourWrapper
{
    private View base;
    private Button button;

    public YourWrapper(View base)
    {
        this.base = base;
    }

    public Button getButton()
    {
        if (button == null)
        {
            button = (Button) base.findViewById(R.id.your_button);
        }
        return (button`);
    }
}

sub=(Button)findViewById(R.id.subscribe_now_btn);改变为sub=(Button) mRow.findViewById(R.id.subscribe_now_btn);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
给button加 onclick 事件未遂
很简单的页面:rnrnaspx:rnrnrn rn rn rn rn rn rnrnrncs:rn protected void Page_Load(object sender, EventArgs e)rn rnrn btnTest.Attributes.Add("OnClick", "alert('haha'); ");rnrn rnrn但是运行后,从浏览器查看源代码,却没有:rnrnrn以前也是这么做的,没有问题,现在就不行了?
Android之给Button设置OnClick监听器
方法一:通过匿名内部类实现 步骤1:在layout文件夹下的 activity_main.xml文件中创建一个Button组件,例如: android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="
Javascript button onclick 事件的一些问题
我在js 下随便写了一个函数如下rn [code=JScript]rnrnfunction test()rnrn var flag;rn flag=1;rn if(flag)rn alert(" this is a test");rn return 0;rnrn[/code]rnrn在html页面写了两个按钮,点击按钮时调用这个函数rnrn[code=HTML]rnrnrnrnrn[/code]rnrnrn我想搞明白的是吗,上面两个按钮的点击事件 onClick="test()" 与 onClick="return test()" 有什么区别? 分别用于什么样的情况。希望大家能给予详细的解答。
Button的onclick()事件调用函数无效
比如:rn rn.................rnrn结果报错,说是什么调用时间错误;总之,点击button后不能调用sub exe();rn多谢先!!
android listview与button事件
在listview中用适配器添加按钮,textview做删除,点击button时获取textview中的数据,总是获取最后一个textview的数据
ListView控件的onItemClick事件和item中Button的onClick事件冲突的解决办法
如果ListView的item中有Button控件,如果不进行相关设置,会导致button无法监听onClick事件(被ListView的onItemClick事件覆盖)。解决办法: 在ListView的item的xml配置文件的根节点添加属性 android:descendantFocusability="blocksDescendants", 并且,在要添加事件的子控件(如butto
如何给 TextView 设置 Listener ?
我给 Listener 设置了监听器,但是不好用。我想单击文本后开启 activity。 我把我使用的代码帖出来,大家看看怎么改呢?rnrn public void onClick(View v) rn // TODO Auto-generated method stubrn rn int i = v.getId();rn //String roomName = textView[i].getText().toString();rn //Intent intentDeviceOperation = new Intent(v.getContext),DeviceOperation.class);rn //startActivity(intentDeviceOperation);rn rn //Intent i1 = new Intent(v.RoomForSpecificUser.this,DeviceOperation.class);rn //RoomForSpecificUser.this.startActivityForResult(i1,7);rn Intent ii = new Intent();rn ii.setClass(RoomForSpecificUser.this, DeviceOperation.class);rn rn不是启动另一个 activity,也没有得到错误信息。
监听listview中的button事件
  public class nearby_custom extends Activity { private TextView tv_back; private ListView lv_list; private ImageButton ibtn_add_custom; private ArrayList&amp;lt;String&amp;gt; mName = new ArrayList&amp;...
js无法响应 button 的onclick 事件
rnrnjs 代码存入文件a.jsrnmonitorEdit: function()rn rn alert("hello");rn ,rnrn结果输出弹窗rnrn求助
Button 控件的 OnClientClick 和 OnClick 事件执行顺序问题
rn 无标题页rn rnrnrn rn rn rn rn rn rnrnrn上面这段是ASPX文件主体,页面上有两个TextBox 和一个Button ,Button 有两个事件,一个客户端事件,一个写在后配代码CS文件中,如下rnprotected void Button1_Click1(object sender, EventArgs e)rn rn Response.Write("OK");rn rnrn执行时,当我按下按纽,好像是OnClientClick 事件先执行验证,难过验证后执行OnClick事件输出OK,但如果没有难过验证,会弹出提示框,点提示框的确定后也会输出OK,这就不是我想要的了,如何在验证不通过的时候就不再执行OnClick?
动态生成的 Button 怎么实现它的 OnClick 事件???
各位大虾们呀!!!请问:我动态生成的 Button 怎么才能实现它的 OnClick 事件???
button 按钮的OnClientClick 和 onClick 事件问题
[code=C#]rn前台:rn function dochecks()rn var txtname=document.getElementById("txtname").valuern if(txtname=="")rn alert("主题不能为空");rn return false;rn elsern return ture; rn rn rnrnrn程序已经执行了 “主题不能不能为空” return false ,但后台还是执行OnClick 事件rn页面中运用了jquery ,swfupdaload.js 大量js文件rn[/code]rn
动态创建的 Button, 怎么动态添加 OnClick 事件
这里无效, 怎么才能引用 CheckLogin 方法?rn //smtButton.OnClick=this.CheckLogin;rnrn如下:rn public void CheckLogin(Object s, EventArgs e)rn rn rn rn rn public void Login(PlaceHolder LoginPh)rn rn Literal Br=new Literal();rn Br.Text=" ";rn rn Literal ltUsername=new Literal();rn ltUsername.Text="Username: ";rn rn Literal ltPassword=new Literal();rn ltPassword.Text=" Password: ";rn rn TextBox Username=new TextBox();rn Username.ID="Username";rn rn TextBox Password=new TextBox();rn Password.TextMode=TextBoxMode.Password;rn Password.ID="Password";rn rn Button smtButton=new Button();rn smtButton.Text="login now";rn //smtButton.OnClick=this.CheckLogin;rn rn LoginPh.Controls.Add(ltUsername);rn LoginPh.Controls.Add(Username);rn LoginPh.Controls.Add(ltPassword);rn LoginPh.Controls.Add(Password);rn LoginPh.Controls.Add(Br);rn LoginPh.Controls.Add(smtButton);rn
服务器控件button的onclick属性和button_click事件的区别
请问是不是前者处理的是客户端脚本,后者是执行服务器端程序?rn如果我一个程序是判断输入是否正确,如果正确在执行服务器端程序。那么我单击button会不会即执行了onclick调用的脚本,也执行了button_click事件?总是觉得这两个重复或者相互之间没有关联性。
怎么样给Button的onclick加上快捷健?
rnrn就是像这样的按钮呀,有源代码最好了,呵呵~~~
给UGUI的Button动态添加OnClick监听
下面是我用UGUI的button的onClick.AddListener写的一个添加OnClick的方法 如果有什么不对的地方,多谢大神评论 using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; public class AddDelega
如何给Button赋一个onclick方法
比如这个Button的ID是button1,那我们通过getElementByID方法找到他以后,给这个Button的Onclick方法赋一个函数,这样占击它时,就运行这个函数的内容.rn不是直接在静态的给这个Button写上这个Onclick方法.rn谢谢.
给button设置边框
self.btn.layer.borderColor = [UIColor blackColor].CGColor; self.btn.layer.borderWidth = 5;
给button设置背景图片
//在mfc中,是没有picturebutton的,如果需要一个类似picturebutton的按钮,可以通过设置button的//背景图片来实现。首先,准备好需要设置的图片。(这里以位图为例)把图片加载到项目资源bitmap中。然后在对话框中添加一个按钮,设置按钮的bitmap属性为True。准备工作完毕。开始设置按钮的背景图片:在窗口实例化的代码中,初始化button的背景图具体代码如下:On...
给Button设置圆角
//UIButtonTypeRoundedRect 四个角是圆弧形状 UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; //设置圆角 [button.layer setMasksToBounds:YES]; [button.layer setCornerRadius:20.0];
求助:一个Button的Listener
战斗力为负,这个问题也许很2B。rn在程序中加入代码(如下)时就会出现问题(AndroidRunTime VM shutting down),程序直接关闭,请教这是什么原因?rnrnString temp;rn...rn...rn...rnrnrnclass cListener implements OnClickListenerrn rn @Overridern public void onClick(View v)rn rn temp="";rn result.setText(temp);rn rn rn
ListView中的Button点击设置
在ListView的Item中,如果有Button控件,那么要实现Button和Item点击都有响应,可以将Item的Layout中Button的focusable属性设为false,然后设置layout的属性Android:descendantFocusability="blocksDescendants"。 xml version="1.0" encoding="utf-8"?> R
onclick 事件
.cs 文件有一个方法rnprotected void Navigation()rn...rn.aspxrnrn问:rn1)onclick 怎么调用 Navigation方法rn2)herf 和 onclick 哪个先触发rn3)如果 rn怎样才能不跳转到"http://www.csdn.net"rnrn
给button添加事件没反应??
给两个panel动态添加button并设置属性和事件,第一个panel成功,第二个事件没响应。两个panel都放在updatepanel里面。代码如下:rn[code=C#]rn protected void Page_Load(object sender, EventArgs e)rn rn sda = new SqlDataAdapter("select faci_id, faci_name from facilities where display='1'", conn);rn sda.Fill(ds, "facilities");rn for (int i = 0; i < ds.Tables["facilities"].Rows.Count; i++)rn rn myButton = new Button();rn myButton.Width = 85;rn myButton.Text = ds.Tables["facilities"].Rows[i][1].ToString();rn myButton.ID = ds.Tables["facilities"].Rows[i][0].ToString();rn myButton.Click += new EventHandler(myButton_Click);rn this.Panel1.Controls.Add(myButton);rn rn rnrn protected void myButton_Click(object sender,EventArgs e)rn rn Button myBtn = (Button)sender;rn selectButton(myBtn.Text.ToString().Trim());rn Label1.Text = "您点击了" +myBtn.Text.ToString()+ "这个按钮";rn rnrn private void selectButton(string myButtonText)rn rn ds.Tables.Clear();rn string sql = "SELECT * FROM faci_orders INNER JOIN facilities ON faci_orders.faci_id = "+rn "facilities.faci_id WHERE (facilities.faci_name = '" + myButtonText + "')";rn sda = new SqlDataAdapter(sql,conn);rn sda.Fill(ds,"faci_orders");rnrnrn //动态添加命令按钮并添加属性事件rn for (int i = 0; i < ds.Tables["faci_orders"].Rows.Count; i++)rn rn myButton = new Button();rn myButton.Text = ds.Tables["faci_orders"].Rows[i]["order_name"].ToString();rn myButton.ID = ds.Tables["faci_orders"].Rows[i]["order_id"].ToString();rn //设置按钮大小以及委托事件rn myButton.Width = 85;rn myButton.Height = 30;rn myButton.Click += new EventHandler(orderBtn_Click);rn Panel2.Controls.Add(myButton);rn rn rnrn protected void orderBtn_Click(object sender,EventArgs e)rn rn //根据所点击按钮传送指令rn Button myOrderBtn = (Button)sender;rn Label2.Text =“你点击了按钮:"+ myOrderBtn.Text.ToString();//没反应了??rn rn[/code]
如何为已有的事件添加事件?比如button的onclick
代码很简单,如下,我希望得到的是弹出111,然后弹出2:rnrn[code=JScript]rn rn[/code]rnrnrn不要告诉我直接用:rnobj.onclick = function ()rn t1(obj);// 因为这个t1是由别人提供的,命名谁知道是啥rn alert(2);rnrn
关于button的 onclick 事件和textbox的ontextchanged事件的执行顺序问题
这两个事件有没有固定的执行顺序?试了一下,当点击按钮时,onclick事件中输出的文字总是在ontextchanged事件之后输出,这能说明它们之间有先后顺序么?还有就是page_load 事件在页面加载时是不是第一个被触发?因为看到page_load函数中的输出总是在最前面。rn新手,谢谢指点!
ListView控件与Listener
采用Android5.x进行讲解。本课程包含了几乎所有的Android开发技术,例如,Eclipse和Android Studio开发环境的搭建、各种控件的详细使用方法、布局、四大应用程序组件、数据存储、网络、对话框、Toast、通知、Intent、Android5.x新特性、Fragment、ActionBar、拖放技术、组件开发、硬件访问、定时器、Android NDK等技术。
关于BUTTON的onclick
button的onclick显示触发了一个JS时间比如 rn但现在我还想做个button点击更改背景图案,再点恢复的效果,这个时候应该怎么办? onclick不能包含两个函数吧。
button onclick无法跳转
-rnrn+
button和click事件和OnClick事件冲突 - -。
rnrnrnclick="return checkAll()" 是调用的客户端的js进行验证。 如果验证成功就调用服务端OnClick事件进行插入数据库操作。 可是当我定义了服务端事件过后。 客户端的验证就不起作用了。 怎么解决
求解button的onclick问题
今天写了段ajax代码,ff运行ok,由于考虑多浏览器支持原因,用ie(ie8)运行了一下,按button报错rnrn错误提示如下rn网页错误详细信息rnrn[color=#0000FF]用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.4; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.1)rn时间戳: Thu, 22 Apr 2010 11:04:06 UTCrnrnrn消息: 对象不支持此操作rn行: 11rn字符: 1rn代码: 0rnURI: http://localhost:8080/myajax/myajax.htm[/color]rnrnrn于是删除所有内容,只留空方法体,照样报错,rn开虚拟机,ie6测试(不用服务器,直接运行),一样报错rn怀疑start方法名问题,改名后运行ok。rnrnrn代码如下rn[code=HTML]rnrnrn rnrnrn rnrnrn[/code]rnrn问题已经解决,只是有点疑惑start是ie的内置属性还是什么?希望知情者告知~~
button onclick触发问题
我现在页面上有两个button rnbutton1 click后验证输入数据的正确性 如果全部正确则执行数据导入rnbutton2不可见 并在page_load中添加rnButton2.Attributes.Add("onclick","Javascript:return confirm('确认更新?');");rnrn我怎么才能在点击button1数据验证完成后 导入数据库之前 触发button2rn出现 更新提示框 并且点击确定继续执行导入数据的操作rn谢谢先
Button的OnClientClick和onclick的问题
[code=HTML][/code]rn[code=JScript] [/code]rn[code=C#]rnprotected void Button_Select_Click(object sender, EventArgs e)rn rn Bll.Book book = new Bll.Book();rn DataSet ds = book.GetList();rn this.GridView1.DataSource = ds;rn this.GridView1.DataBind();rn [/code]rnrn在执行了OnOk()以后就不会执行Button_Select_Click事件了.在网上找了说是return fales的问题.不过我还是不懂.求教.!
jsp的button的onclick 如何写
我在asp写了一个buttonrnResponse.Write(" ")rnrn现在想把他写到java 的jsp文件里 rn例如原来的jsp有 rn现在想把上面的button替换这个。rn上面的button是服务器脚本版本Response.Write, 现在用最简单的html方法rn直接像这样  rn如何写  (请注意action='aaa.do? ) 
button onclick页面跳转
rn 发布求购信息rn为什么加return false;页面才跳转,不加的话不跳转。但是有一个页面放了一个注册按钮,没有加return false;页面可以跳转。为什么??请大神说明一下原因,尽量详细。
关于Button的onclick和onServerClick
onClick调用js的一个方法,rnrn出现alert();提示rnrn然后,有没有什么办法让其返回,不在调用onserverClick??
取button的onclick值
asp页面中 如何取得button的onclick事件中的id值rnrnrn
button的onclick问题。。。谢谢
想在button的click事件里调两个方法。第一个方法执行完成出结果,再执行第二个方法对第一个方法的结果进行操作。rnonClick="a();b()"不行。rn该怎么写onclick呢?。。。半天没试出来。
Button的onclick属性
有一张表单,里面有个下拉框,设置为下拉框的值改变时,刷新其他的页面。如选择合同号后,刷新其他输入框里(如客户地址,客户联系人)的默认值,也可以进行修改。rn再后面有个提交表单的操作,提交表单时,想把这个新建到出库单主表里rn如新建了一条记录为:出库单号为001,合同名称为:20091123001,客户地址:....客户联系人:....rn怎样判断是点击了按钮,而不是改变下拉框的值...rnrn在按钮那增加oncilck的话是否可行,其代码是?rnonclick="...action=add"(具体的不知道怎么写)rn还是?
button的OnClientClick和onclick的问题
我有个changepwd.aspx的页面,用来修改密码,在页面里面我用js来判断新密码是否符合标准,比如两次输入的新密码是否正确,如果正确就执行后台的onclick事件,可是现在即使就是发现错误了,但是后台还是执行了onclick时间rnrnrn请问OnClientClick和onclick如何控制,或者说如何使用?
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件