如何通过按钮的OnClick在getView方法控制研究的TextView [英] How to controll textview by Button OnClick in getView method

查看:139
本文介绍了如何通过按钮的OnClick在getView方法控制研究的TextView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序列表视图有,ListView项有一个TextView的和一个按钮和其他图像等...
我用的是ViewHolder模式。

我想在TextView中更改文本,当按钮被点击

如何控制的TextView在按钮的onclick?

 公共类AListAdapter扩展ArrayAdapter<&迈德特GT; {    静态类ViewHolder {        TextView的viewCountView;        的ImageButton myButton的;        ImageView的profileImageView;    }    公共查看getView(INT位置,查看convertView,父母的ViewGroup){
        最后AListAdapter适配器=这一点;
        ViewHolder支架=无效;
        如果(convertView == NULL){
            convertView = inflater.inflate(R.layout.cell父母,假);
            TextView的viewCountView =(TextView中)convertView.findViewById(R.id._view_count_);
            按钮likeButton =(的ImageButton)convertView.findViewById(R.id._like_button);
            LoadImageView profileImageView =(LoadImageView)convertView.findViewById(R.id.albumlist_profile_image);            持有人=新ViewHolder();
            holder.viewCountView = viewCountView;
            holder.likeButton = likeButton;
            holder.profileImageView = profileImageView;            holder.likeButton.setOnClickListener(新View.OnClickListener(){
                @覆盖
                公共无效的onClick(视图v){
                   //如何控制研究的TextView ??????????????????
               //当点击我想改变的TextView
                   //像holder.viewCountView.setText(点击);
                }
            });            convertView.setTag(保持器);
        }其他{
            支架=(ViewHolder)convertView.getTag();
        }
        迈德特数据=(迈德特)adapter.getItem(位置);
        如果(数据!= NULL){            holder.viewCountView.setText(将String.valueOf(data.viewCount)+意见);
            //图像设置
        }
        返回convertView;
    }


解决方案

你不能访问使用局部变量在这种情况下,由当时的onClickListener被称为变量就会超出范围。

因此​​,你可以设置 ViewHolder 作为按钮的标记过,那么你就可以访问你的的onClick 处理程序

  holder.likeButton.setTag(持有人);
holder.likeButton.setOnClickListener(新View.OnClickListener(){
    @覆盖
    公共无效的onClick(视图v){
       ViewHolder mH的=(ViewHolder)v.getTag();       mH.viewCountView.setText(点击);
    }
});

My App has Listview,Listview Item have one TextView and one Button and other image etc... and I use the ViewHolder Pattern.

I want to change text in TextView, when the button is clicked

How to control TextView in the Buttons Onclick ?

 public class AListAdapter extends ArrayAdapter<MyData> {

    static class ViewHolder {

        TextView viewCountView;

        ImageButton myButton;

        ImageView profileImageView;

    }

    public View getView(int position, View convertView, ViewGroup parent) {
        final AListAdapter adapter = this;
        ViewHolder holder = null;


        if (convertView == null) {
            convertView = inflater.inflate(R.layout.cell parent, false);
            TextView viewCountView = (TextView) convertView.findViewById(R.id._view_count_);
            Button likeButton = (ImageButton) convertView.findViewById(R.id._like_button);
            LoadImageView profileImageView = (LoadImageView) convertView.findViewById(R.id.albumlist_profile_image);

            holder = new ViewHolder();
            holder.viewCountView = viewCountView;
            holder.likeButton = likeButton;
            holder.profileImageView = profileImageView;

            holder.likeButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                   // how to controll TextView??????????????????
               // when click i want to change textview
                   //like holder.viewCountView.setText("clicked");
                }
            });

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        MyData data = (MyData) adapter.getItem(position);
        if (data != null) {

            holder.viewCountView.setText(String.valueOf(data.viewCount) + "views");
            //image settings 
        }
        return convertView;
    }

解决方案

You cant access use local variables in this case, By the time the onClickListener is called the variables would have gone out of scope.

So instead you can set the ViewHolder as a tag for the button too, then you can access that in your onClick Handler

holder.likeButton.setTag(holder);
holder.likeButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       ViewHolder mH = (ViewHolder) v.getTag();

       mH.viewCountView.setText("clicked");
    }
});

这篇关于如何通过按钮的OnClick在getView方法控制研究的TextView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆