将项目添加到愿望列表中,如flipkart

时间:2016-07-14 07:09:50

标签: android notifydatasetchanged

我想将项目添加/删除到心愿单。我从Api得到一个回复​​,所以我有一个标签is_wishlist = true / false,当我启动基于该值的应用程序时,我通过更改图标显示在愿望清单中,但现在问题是如果我正在改变那个wishlist状态,例如从添加到remobing到添加,在Api我得到响应成功,但我无法更改图标。这是我的代码。任何人都可以帮我如何删除或添加项目到愿望清单

this is my image when i am launching application

-O3

1 个答案:

答案 0 :(得分:0)

更改此行

holder.wish_list.setImageResource(R.drawable.wishlist);

到这个

Resources resources = getResources();
holder.wish_list.setImageDrawable(resources.getDrawable(R.drawable.wishlist));

并在else部分执行相同操作并检查输出..

  

注意:

     

getResources().getDrawable已被弃用。

     

您可以尝试 ContextCompat.getDrawable

     

holder.wish_list.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.wishlist));

UpDate:

检查一下。

if(state == true){
  // here is default icon and set api value and send it

}else{

// here is click wishlist icon and set api value and send it
}

UpDate 2:

public class FragmentOne_Adapter extends CursorAdapter {

        FragmentOne_DbAdapter dbHelper;

        public FragmentOne_Adapter(Context context, Cursor c, int flags) {
            super(context, c, flags);
            // TODO Auto-generated constructor stub
            dbHelper = new FragmentOne_DbAdapter(context);
            dbHelper.open();
        }

        @Override
        public void bindView(View view, final Context context, final Cursor cursor) {
            // TODO Auto-generated method stub
            final ViewHolder holder = (ViewHolder) view.getTag();

            final int _id = cursor.getInt(cursor.getColumnIndexOrThrow("_id"));
            String title = cursor.getString(cursor.getColumnIndexOrThrow("title"));
            String artist = cursor.getString(cursor.getColumnIndexOrThrow("artist"));
            String volume = cursor.getString(cursor.getColumnIndexOrThrow("volume"));
            final String favorite = cursor.getString(cursor.getColumnIndexOrThrow("favorite"));
            String number = cursor.getString(cursor.getColumnIndexOrThrow("number"));

            // Populate fields with extracted properties
            holder.txtTitle.setText(title);
            holder.txtArtist.setText(artist);
            holder.txtVolume.setText(volume);
            holder.txtNumber.setText(number);

            if (favorite.matches("0")) {
                holder.buttonHeart.setImageResource(R.drawable.heart);
            } else {
                if (favorite.matches("1")) {
                    holder.buttonHeart.setImageResource(R.drawable.heartred);
                } else {
                    holder.buttonHeart.setImageResource(R.drawable.heart);
                }
            }

            holder.buttonHeart.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    if (arg0 != null) {
                        FragmentOne_DbAdapter database = new FragmentOne_DbAdapter(context);
                        database.open();
                        if (favorite.matches("0")) {
                            database.updateItemFavorite(_id, "1");
                            holder.buttonHeart.setImageResource(R.drawable.heartred);
                        } else if (favorite.matches("1")) {
                            database.updateItemFavorite(_id, "0");
                            holder.buttonHeart.setImageResource(R.drawable.heart);
                        }
                    }
                    FragmentOne_Adapter.this.changeCursor(dbHelper.fetchAllPlayer1());
                }
            });

        }

        @Override
        public View newView(Context context, Cursor cursor, ViewGroup parent) {
            // TODO Auto-generated method stub
//            View rowView = ((LayoutInflater) context
//                    .getSystemService("layout_inflater")).inflate(
//                    R.layout.fragment_fragment_one_slview, parent, false);
            View rowView = LayoutInflater.from(context).inflate(R.layout.fragment_fragment_one_slview, parent, false);
            ViewHolder holder = new ViewHolder();
            holder.txtTitle = (TextView) rowView.findViewById(R.id.title);
            holder.txtArtist = (TextView) rowView.findViewById(R.id.artist);
            holder.txtVolume = (TextView) rowView.findViewById(R.id.volume);
            holder.txtNumber = (TextView) rowView.findViewById(R.id.number);
            holder.buttonHeart = (ImageButton) rowView.findViewById(R.id.heart);

            rowView.setTag(holder);
            return rowView;
        }


        class ViewHolder {
            TextView txtTitle;
            TextView txtArtist;
            TextView txtVolume;
            TextView txtNumber;
            ImageButton buttonHeart;
        }
    }