package org.openintents.shopping.wear; import android.content.Context; import android.support.wearable.view.WearableListView; import android.util.Log; import android.view.ViewGroup; import android.widget.TextView; import com.google.android.gms.wearable.DataItem; import com.google.android.gms.wearable.DataItemBuffer; import com.google.android.gms.wearable.DataMap; import com.google.android.gms.wearable.DataMapItem; import org.openintents.shopping.R; import org.openintents.shopping.library.provider.ShoppingContract; import java.util.ArrayList; import java.util.Collection; import java.util.List; public class ShoppingDataItemAdapter extends WearableListView.Adapter { private static final String EMPTY_STRING = ""; private static final String TAG = "ShoppingDataItemAdapter"; private List<DataItem> mItems = new ArrayList<DataItem>(); private Context mContext; public ShoppingDataItemAdapter(Context context){ mContext = context; } @Override public WearableListView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) { return new WearableListView.ViewHolder(new ShoppingItemView(mContext, 14, 20)); } @Override public void onBindViewHolder(WearableListView.ViewHolder viewHolder, int position) { String name = DataMapItem.fromDataItem(mItems.get(position)).getDataMap().getString(ShoppingContract.ContainsFull.ITEM_NAME); String quantity =DataMapItem.fromDataItem(mItems.get(position)).getDataMap().getString(ShoppingContract.ContainsFull.QUANTITY); String units = DataMapItem.fromDataItem(mItems.get(position)).getDataMap().getString(ShoppingContract.ContainsFull.ITEM_UNITS); String status = DataMapItem.fromDataItem(mItems.get(position)).getDataMap().getString(ShoppingContract.ContainsFull.STATUS); String titleDisplay = getTitle(name, quantity, units); ((TextView)viewHolder.itemView.findViewById(R.id.title)).setText(titleDisplay); String tags = DataMapItem.fromDataItem(mItems.get(position)).getDataMap().getString(ShoppingContract.ContainsFull.ITEM_TAGS); if (tags == null){ tags = EMPTY_STRING; } ((TextView)viewHolder.itemView.findViewById(R.id.tags)).setText(tags); } private String getTitle(String name, String quantity, String units) { String titleDisplay; if (quantity == null){ titleDisplay = name; } else { if (units == null){ titleDisplay = quantity + " " + name; } else { titleDisplay = quantity + units + " " + name; } } return titleDisplay; } public void setItems(DataItemBuffer items) { mItems.clear(); for (int i= 0; i < items.getCount();i++){ Log.d(TAG, "received: " + items.get(i).getUri() ); DataMap contentValues = DataMapItem.fromDataItem(items.get(i)).getDataMap(); Log.d(TAG, "content:" + contentValues.getString(ShoppingContract.ContainsFull.ITEM_NAME)); this.mItems.add(items.get(i)); } notifyDataSetChanged(); } public void setItems(Collection<DataItem> items) { mItems.clear(); mItems.addAll(items); notifyDataSetChanged(); } public DataItem getItem(int position){ if (mItems != null){ return mItems.get(position); } else { return null; } } @Override public int getItemCount() { if (mItems == null){ return 0; } else { return mItems.size(); } } public void remove(int position) { mItems.remove(position); notifyDataSetChanged(); } }