我的应用程序有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)
在这种情况下,您无法访问使用局部变量,在调用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)
| 归档时间: |
|
| 查看次数: |
2493 次 |
| 最近记录: |