如何在getView方法中通过Button OnClick控制textview

dmn*_*nlk 1 android

我的应用程序有Listview,Listview项目有一个TextView和一个Button和其他图像等...我使用ViewHolder模式.

单击按钮时,我想在TextView中更改文本

如何在按钮Onclick中控制TextView?

 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;
    }
Run Code Online (Sandbox Code Playgroud)

Ahm*_*xan 7

在这种情况下,您无法访问使用局部变量,在调用onClickListener时,变量将超出范围.

因此,您也可以将ViewHolder按钮设置为标签,然后您可以在onClick处理程序中访问该按钮

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");
    }
});
Run Code Online (Sandbox Code Playgroud)