【问题标题】:Change button in listview with reference to data参考数据更改列表视图中的按钮
【发布时间】:2020-11-29 05:44:00
【问题描述】:

我只会说一点英语.. 我用 sqlite db 制作了 listview。 我要实现这个功能

例如)

  1. 我有 sqlite db(带有 listview。我已经制作了。并且 listview 有按钮) 行 ID 1、2、3 数字 0, 1, 0

  2. 我需要这样的

    如果(数字== 0){ button.backgroundResource(R.drawble.icon1); }否则如果(数字== 1){ button.backgroundResource(R.drawble.icon2); }

附上图片,方便理解。

enter image description here

这是我的列表适配器

public class ListAdapter extends BaseAdapter implements View.OnClickListener {

    public interface ListBtnClickListener {
        void onListBtnClick(int position, View view);
    }

    public ListAdapter(Context mContext, ArrayList<SongList> mList, ListBtnClickListener clickListener) {
        this.mContext = mContext;
        this.mList = mList;
        this.listBtnClickListener = clickListener;
        layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mSelectedItemsIds = new SparseBooleanArray();
    }

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

    @Override
    public Object getItem(int position) {
        return mList.get(position);
    }

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

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

        View view = convertView;

        if (view == null) {
            viewHolder = new ViewHolder();
            view = layoutInflater.inflate(R.layout.list_item, null);
            viewHolder.relativeLayout = (RelativeLayout) view.findViewById(R.id.listview_item);
            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }

        _url = (TextView) view.findViewById(R.id.song_url);
        _name = (TextView) view.findViewById(R.id.song_name);
        _time = (TextView) view.findViewById(R.id.song_time);
        _img = (ImageView) view.findViewById(R.id.song_thumbnail);
        favorite = (Button) view.findViewById(R.id.favorite);


        Bitmap bitmap = BitmapFactory.decodeByteArray(mList.get(position).get_img(), 0, mList.get(position).get_img().length);
        _img.setImageBitmap(bitmap);


        final SongList listViewItem = mList.get(position);

        if (mList != null) {
            _url.setText(listViewItem.get_url());
            _name.setText(listViewItem.get_name());
            _time.setText(listViewItem.get_time());
        }

        final SongList songList = mList.get(position);

        favorite.setTag(position);

        favorite.setOnClickListener(this);

        return view;
    }

    @Override
    public void onClick(View view) {
        if (this.listBtnClickListener != null) {
            this.listBtnClickListener.onListBtnClick((int) view.getTag(), view);

        }
    }

    public class ViewHolder {
        private RelativeLayout relativeLayout = null;
    }

}

【问题讨论】:

    标签: sqlite listview button


    【解决方案1】:

    我假设你有一些方法,比如SongList.getNumber()。您可以像这样更改 if 块中的代码:

     if (mList != null) {
        _url.setText(listViewItem.get_url());
        _name.setText(listViewItem.get_name());
        _time.setText(listViewItem.get_time());
    
        // assuming you have getNumber() method
        int number = listViewItem.getNumber();
        
        // checking if number is equal to 0
        if(number == 0){
             favorite.backgroundResource(R.drawble.icon1);
        } else{
             favorite.backgroundResource(R.drawble.icon2);
        }
     }
    

    编辑:如果您存储number 变量仅用于更改按钮的背景,那么您可以使用getView() 方法中提供的position 参数。您所要做的就是检查position 是偶数还是奇数,并相应地更改按钮的背景。

    【讨论】:

    • 我分享了我的 listadapter.. 但我测试了很多。我的代码不干净..我希望你明白 :).. 谢谢先生
    • 天哪,非常感谢先生。它的工作。这很简单。但我不知道。我会尽力帮助像你一样的人。
    • 不客气。如果你愿意,你能把我的答案标记为正确吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多