Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击imagebutton项目自定义列表视图时更改图像_Java_Android_Listview_Android Imagebutton - Fatal编程技术网

Java 单击imagebutton项目自定义列表视图时更改图像

Java 单击imagebutton项目自定义列表视图时更改图像,java,android,listview,android-imagebutton,Java,Android,Listview,Android Imagebutton,我有一个自定义列表视图,每个项目都有一个imagebutton,我想在单击时立即更改每个imagebutton的图像。自定义listview中的每个项都是一个名为baiHat{}的对象。 我像这样使用BaiHatAdapter,但它不会立即改变,我必须滚动listview以查看更改 @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflate

我有一个自定义列表视图,每个项目都有一个imagebutton,我想在单击时立即更改每个imagebutton的图像。自定义listview中的每个项都是一个名为baiHat{}的对象。 我像这样使用BaiHatAdapter,但它不会立即改变,我必须滚动listview以查看更改

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater=this.context.getLayoutInflater();
    View row=inflater.inflate(this.resource, null);
    TextView txtMs = (TextView) row.findViewById(R.id.ms);
    TextView txtBh = (TextView) row.findViewById(R.id.bh);
    TextView txtCs = (TextView) row.findViewById(R.id.cs);
    TextView txtLr = (TextView) row.findViewById(R.id.lr);
    ImageButton imglike = (ImageButton) row.findViewById(R.id.imageButton);
    final BaiHat baiHat = this.objects.get(position);
    txtMs.setText(baiHat.getTxtms());
    txtBh.setText(baiHat.getTenBh());
    txtCs.setText(baiHat.getTxtcs());
    txtLr.setText(baiHat.getTxtLr());
    imglike.setImageResource(baiHat.getImg());
   imglike.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           xulythich(baiHat);
        }
    });
    return row;
}

private void xulythich(BaiHat baiHat) {
    if(baiHat.getThich()){
     baiHat.setThich(false);
     baiHat.setImg(R.drawable.addfav);

            }else{
        baiHat.setThich(true);
       baiHat.setImg(R.drawable.added);
    }
        }
创建一个选择器文件,并将其指定为src。但作为一种更好的方法,您可以尝试将其更改为togglebutton,因为imageview并不意味着可以单击,而是提供选择器源的背景。 它看起来与任何imageview一样,但具有可单击和从选择器文件更改其背景的功能