【问题标题】:Issue with ImageButton onClickListener in baseAdapterbaseAdapter 中的 ImageButton onClickListener 问题
【发布时间】:2014-08-08 06:59:55
【问题描述】:

我在base adapter 中的视图持有人中有ImageButton。我在 GetView 中为ImageButton 设置了图像。它工作正常。我为那个ImageButton设置了onClickListener。所以,现在当我点击 ImageButton 时,我需要更改 ImageButton 的背景图片。

package com.virtual.applets.moments.adapter;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

public class MomentsAdapter extends BaseAdapter {
Context mContext;
LayoutInflater mLayoutInflater;
List<Moments> mReturnDataMomentsList;

private int[] mIcons = { R.drawable.like_grey, R.drawable.dislike_grey, R.drawable.abuse_grey };
private int[] mSelectedIcons = { R.drawable.like_selected, R.drawable.dislike_selected, R.drawable.abuse_selected };
ViewHolder holder;

public MomentsAdapter(FragmentActivity activity, List<Moments> momentsListt) {
this.mContext = activity;
this.mLayoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.mReturnDataMomentsList = momentsList;
}

@Override
public int getCount() {
return mReturnDataMomentsList.size();
}

@Override
public Object getItem(int arg0) {
return null;
}

@Override
public long getItemId(int arg0) {
return 0;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

if (convertView == null) {
holder = new ViewHolder();
convertView = mLayoutInflater.inflate(R.layout.moments_custom_screen, null);
holder.mLikeBtn = (ImageButton) convertView.findViewById(R.id.like_btn);
holder.mLikeBtn.setImageResource(mIcons[0]);
holder.mDisLikeBtn.setImageResource(mIcons[1]);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}



holder.mLikeBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
holder.mLikeBtn.setImageResource(mSelectedIcons[0]);
}
});
return convertView;
}

public class ViewHolder {

ImageButton mLikeBtn, mDisLikeBtn, mAbuseBtn, mCommentBtn;
}

}

在片段中我称这个适配器为

MomentsAdapter momentsAdapter = new MomentsAdapter((FragmentActivity) getActivity(), mReturnDataMomentsList);
mListview.setAdapter(momentsAdapter);

【问题讨论】:

  • 您可以为 imageButton 源使用 android 选择器 drawable,它具有激活、聚焦、按下、默认(android:drawble)等条件。
  • @Pravin:问题更新了!
  • 当你的imageButton点击时你想做什么,你想设置哪个背景?然后再点击一下你想做什么?

标签: android onclicklistener imagebutton baseadapter getview


【解决方案1】:

查看本教程,Here。它展示了如何在 Listview 项目中添加多个可点击项目。

要更改所选Button 的背景,您必须保存 这是所选按钮,因为Listview 会在它离开屏幕时破坏其views。 按照自定义适配器的代码来获得您正在寻找的结果。

此处选定的按钮位置保存在SpareseBooleanArray 中,并根据其值设置更改背景。

private class CustomAdapter extends ArrayAdapter{

    private SparseBooleanArray selectedItems;

    public CustomAdapter(Context context, int resource) {
        super(context, resource);
        selectedItems = new SparseBooleanArray();
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        if(convertView == null){
             //Inflate your view here
        }

        ImageButton imageButton = (ImageButton) convertView.findViewById(R.id.imageButton);
        if (selectedItems.get(position)){
            //SET your selected background of imageButton here
        }else{
            //SET your unselected chackground of imageButton here
        }
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!selectedItems.get(position)){
                    selectedItems.put(position,true);
                    //SET your selected background of imageButton here
                }else{
                    selectedItems.delete(position);
                    //SET your unselected background of imageButton here
                }
            }
        });
        return super.getView(position, convertView, parent);
    }
}

【讨论】:

  • 至少通过您提供的链接给读者一个简短的概述。以及一些重要的概念。
  • 我想知道如何在ImageButton的点击上设置ImageButton的背景图片。 FB android 应用程序中的示例当我们单击like 按钮时,它会将like 按钮的白色更改为蓝色。我在这里期待的那种功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 2020-11-19
  • 1970-01-01
相关资源
最近更新 更多