wang_gan_7889
江河君
采纳率100%
2016-07-22 04:35 阅读 2.9k

怎么监听listview里的item上的按钮?

Android listview的item里面有个按钮,item是另外一个XML文件,怎么给这个按钮注册监听事件?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    peceoqicka 吓得我都初始化了 2016-07-22 06:25

    在适配器(Adapter)的getView函数中通过findViewById(id)函数找到你需要绑定事件的按钮,然后通过setOnClickListener绑定,例如:

     //在调用findViewById之前必须通过inflate布局文件得到convertView
     //或者getView函数传递过来的convertView不为空
     Button btn=convertView.findViewById( btn id  );   // btn id 填入XML布局文件中的Button定义的ID
     btn.setOnClickListener(new View.OnClickListener(){
         @Override
            void onClick(View v){
                //这里写你的按钮点击之后要做的事
            }
     });
    
    
    点赞 4 评论 复制链接分享
  • cumberbatch cumberbatch 2016-07-22 07:20

    楼上回答正解,但要注意的是,在item中设置button 或者imagebutton,会存在抢取焦点的现象,需要在Item Layout 的根布局中加上 android:descendantFocusability = "blocksDescendants" 属性即可

    点赞 3 评论 复制链接分享
  • Allisonton tesfen 2016-07-22 05:25

    可以用intent将xml文件传入按钮监听事件当中,形式如下

     listview.setOnItemClickListener(new AdapterView.OnItemClickListener(){
         @Override
         public void onItemClick(AdapterView<?> parent, View view,int position,long id){
            Intent intent = new Intent(this,yourActivity.class);
            startActivity(intent);
         }
     });
    

    然后在yourActivity.java(yourActivity.java是你的item对应的.java文件)的onCreate中

    public class yourActivity extends Activity{
        @Override
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.yourXML);
            Intent intent = getIntent();
        }
    
    }
    
    
    
    点赞 评论 复制链接分享
  • xkyh941 屋檐下躲小小雨 2016-07-22 05:36

    lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // 你要进行的操作
    
            }
        });
    
    点赞 评论 复制链接分享
  • jinhuoxingkong 劲火星空 2016-07-22 06:03

    public class MainActivity extends Activity implements OnItemClickListener{

    private Context mContext;  
    
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        mContext = this;  
    
        // 找到控件  
        ListView lv_news = (ListView)findViewById(R.id.lv_news);  
    
        // 获取新闻的内容,也就是list封装  
        ArrayList<NewsBean> allNews = NewsUtils.getAllNews(mContext);  
    
        // 创建一个adapter设置给listview  
        NewsAdapter newsAdapter = new NewsAdapter(mContext, allNews);  
        lv_news.setAdapter(newsAdapter);  
    
        // 设置listview条目的点击事件  
        lv_news.setOnItemClickListener(this);  
    
    }  
    
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {  
        //需要获取条目上bean对象中url做跳转  
        NewsBean bean = (NewsBean) parent.getItemAtPosition(position);  
    
        String url = bean.newsurl;  
    
        //跳转浏览器  
        Intent intent = new Intent();  
        intent.setAction(Intent.ACTION_VIEW);  
        intent.setData(Uri.parse(url));  
        startActivity(intent);  
    
    }  
    

    }

    
    
    点赞 评论 复制链接分享

相关推荐