Внедрих лентата за действие sherlock в приложението си за Android. Това приложение има функционалност за пазарска количка. В лентата с действия има икона, която отвежда потребителя до количката. Трябва да променя динамично тази икона, когато артикулите се добавят в количката и се премахват от нея. Това е число, което трябва да се появи в горната част на иконата на количката в лентата за действие.
По-долу има екранна снимка:
Menu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/scanner"
android:icon="@drawable/ic_nav_scanner"
android:showAsAction="always"
android:title="@string/scanner"/>
<item
android:id="@+id/cart"
android:icon="@drawable/ic_nav_cart"
android:showAsAction="always"
android:title="@string/cart"/>
<item
android:id="@+id/a_More"
android:icon="@drawable/ic_nav_more"
android:showAsAction="always"
android:title="@string/more">
<menu>
<item
android:id="@+id/location"
android:icon="@drawable/ic_nav_dropdown_location"
android:showAsAction="always"
android:title="@string/location_action"/>
<item
android:id="@+id/fav"
android:icon="@drawable/ic_nav_dropdown_favourite"
android:showAsAction="always"
android:title="@string/favourites"/>
<item
android:id="@+id/info"
android:icon="@drawable/ic_nav_dropdown_information"
android:title="@string/information"/>
</menu>
</item>
</menu>
Код:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.aiwmain, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.scanner:
//scanner clicked
break;
}
Оценява се всяка помощ за динамична промяна на иконата на количката в лентата с действия.
//РЕДАКТИРАНЕ
Успях да измисля това малко:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
DBManager db = DBManager.getSingletonInstance();
int cartItemCount = db.getCartItemCount(this);
MenuItem cart = menu.findItem(R.id.cart);
MenuItem scanner = menu.findItem(R.id.scanner);
if(cartItemCount > 0){
//I want this item to be changed, I do not want to have seperate drawables for all numbers.
cart.setIcon(R.drawable.arrow_left);
}
return super.onPrepareOptionsMenu(menu);
}
onpreparemenuoptions()
- person Nitin Misra   schedule 21.11.2013