`

AndroidAnnotations - 大大简化您的Android开发

 
阅读更多

https://github.com/excilys/androidannotations

 

使用之前的代码为:

public class BookmarksToClipboardActivity extends Activity {
   
  BookmarkAdapter adapter;
 
  ListView bookmarkList;
 
  EditText search;
 
  BookmarkApplication application;
 
  Animation fadeIn;
 
  ClipboardManager clipboardManager;
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(FLAG_FULLSCREEN, FLAG_FULLSCREEN);
 
    setContentView(R.layout.bookmarks);
 
    bookmarkList = (ListView) findViewById(R.id.bookmarkList);
    search = (EditText) findViewById(R.id.search);
    application = (BookmarkApplication) getApplication();
    fadeIn = AnimationUtils.loadAnimation(this, anim.fade_in);
    clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
 
    View updateBookmarksButton1 = findViewById(R.id.updateBookmarksButton1);
    updateBookmarksButton1.setOnClickListener(new OnClickListener() {
 
      @Override
      public void onClick(View v) {
        updateBookmarksClicked();
      }
    });
 
    View updateBookmarksButton2 = findViewById(R.id.updateBookmarksButton2);
    updateBookmarksButton2.setOnClickListener(new OnClickListener() {
 
      @Override
      public void onClick(View v) {
        updateBookmarksClicked();
      }
    });
 
    bookmarkList.setOnItemClickListener(new OnItemClickListener() {
 
      @Override
      public void onItemClick(AdapterView<?> p, View v, int pos, long id) {
        Bookmark selectedBookmark = (Bookmark) p.getAdapter().getItem(pos);
        bookmarkListItemClicked(selectedBookmark);
      }
    });
 
    initBookmarkList();
  }
 
  void initBookmarkList() {
    adapter = new BookmarkAdapter(this);
    bookmarkList.setAdapter(adapter);
  }
 
  void updateBookmarksClicked() {
    UpdateBookmarksTask task = new UpdateBookmarksTask();
 
    task.execute(search.getText().toString(), application.getUserId());
  }
   
  private static final String BOOKMARK_URL = //
  "http://www.bookmarks.com/bookmarks/{userId}?search={search}";
   
   
  class UpdateBookmarksTask extends AsyncTask<String, Void, Bookmarks> {
 
    @Override
    protected Bookmarks doInBackground(String... params) {
      String searchString = params[0];
      String userId = params[1];
 
      RestTemplate client = new RestTemplate();
      HashMap<String, Object> args = new HashMap<String, Object>();
      args.put("search", searchString);
      args.put("userId", userId);
      HttpHeaders httpHeaders = new HttpHeaders();
      HttpEntity<Bookmarks> request = new HttpEntity<Bookmarks>(httpHeaders);
      ResponseEntity<Bookmarks> response = client.exchange( //
          BOOKMARK_URL, HttpMethod.GET, request, Bookmarks.class, args);
      Bookmarks bookmarks = response.getBody();
 
      return bookmarks;
    }
 
    @Override
    protected void onPostExecute(Bookmarks result) {
      adapter.updateBookmarks(result);
      bookmarkList.startAnimation(fadeIn);
    }
     
  }
 
  void bookmarkListItemClicked(Bookmark selectedBookmark) {
    clipboardManager.setText(selectedBookmark.getUrl());
  }
 
}

 

使用之后的代码为:

@NoTitle
@Fullscreen
@EActivity(R.layout.bookmarks)
public class BookmarksToClipboardActivity extends Activity {
   
  BookmarkAdapter adapter;
   
  @ViewById
  ListView bookmarkList;
 
  @ViewById
  EditText search;
   
  @App
  BookmarkApplication application;
   
  @RestService
  BookmarkClient restClient;
 
  @AnimationRes
  Animation fadeIn;
   
  @SystemService
  ClipboardManager clipboardManager;
 
  @AfterViews
  void initBookmarkList() {
    adapter = new BookmarkAdapter(this);
    bookmarkList.setAdapter(adapter);
  }
   
  @Click({R.id.updateBookmarksButton1, R.id.updateBookmarksButton2})
  void updateBookmarksClicked() {
    searchAsync(search.getText().toString(), application.getUserId());
  }
   
  @Background
  void searchAsync(String searchString, String userId) {
    Bookmarks bookmarks = restClient.getBookmarks(searchString, userId);
    updateBookmarks(bookmarks);
  }
 
  @UiThread
  void updateBookmarks(Bookmarks bookmarks) {
    adapter.updateBookmarks(bookmarks);
    bookmarkList.startAnimation(fadeIn);
  }
   
  @ItemClick
  void bookmarkListItemClicked(Bookmark selectedBookmark) {
    clipboardManager.setText(selectedBookmark.getUrl());
  }
 
}

 

@Rest("http://www.bookmarks.com")
public interface BookmarkClient {
     
    @Get("/bookmarks/{userId}?search={search}")
    Bookmarks getBookmarks(String search, String userId);
 
}
1
0
分享到:
评论
2 楼 laiyangdeli 2012-02-16  
jstl1point0 写道
不喜欢用注视

1 楼 jstl1point0 2012-02-16  
不喜欢用注视

相关推荐

    androidannotations框架最新版

    AndroidAnnotations 是一个开源的 Java 注解库,它极大地简化了 Android 应用程序的开发工作。通过在代码中使用特定的注解,开发者可以快速实现视图注入、事件监听、依赖注入等功能,从而提高开发效率并减少出错的...

    androidannotations 测试代码

    综上所述,AndroidAnnotations通过注解大大简化了Android开发,而其测试代码则确保了这些便利性不会牺牲代码质量。理解并熟练运用AndroidAnnotations测试技巧,将有助于提高开发效率和应用的可靠性。

    AndroidAnnotations

    AndroidAnnotations 是一个开源的、注解驱动的框架,它旨在简化 Android 应用的开发过程。通过使用注解,开发者可以减少样板代码,将更多的精力集中在业务逻辑上。这个框架通过自动化处理常见的开发任务,如视图绑定...

    androidannotations

    《AndroidAnnotations:提升Android开发效率的秘密武器》 在Android应用开发的世界里,效率与便捷性是开发者们追求的重要目标。AndroidAnnotations(简称AA)正是这样一款开源库,它以其独特的注解方式,极大地简化...

    annotions开源库

    Android Annotions 是一个专门为 Android 平台设计的开源库,它极大地简化了 Android 应用程序的开发工作。这个库的主要目的是通过注解(Annotations)来减少代码量,提高代码的可读性和可维护性。Annotions 的核心...

    Android Annotations框架使用实例

    Android Annotations框架是一个强大的工具,它通过使用Java注解(Annotations)来简化Android应用的开发,提高了编码效率。本文将深入探讨Android Annotations的使用方法和优势,帮助开发者更好地理解和运用这一框架...

    Android-SwissKnife一个多用途的Groovy库包含使用注释的Android视图注入和线程

    通过注解驱动的编程,Android-SwissKnife大大减少了重复的模板代码,提高了开发效率。例如,不再需要为每个点击事件创建单独的OnClickListener。 6. **兼容性**: 由于其设计灵感来源于ButterKnife和...

    新闻类的开源项目-QuickNews-tiger

    这个项目充分利用了AndroidAnnotations注解框架,大大简化了Android应用的开发过程,提高了代码的可读性和可维护性。 AndroidAnnotations是Java的一个库,它提供了基于注解的代码增强功能,能够自动处理一些繁琐的...

    Android通用流行框架大全【整理】

    这些框架大大提高了Android开发的效率,提供了丰富的功能,并降低了开发难度。选择合适的框架能够使项目更加稳定、健壮,并有助于提升用户体验。开发者应根据项目需求和团队技术栈来选择最合适的框架组合。

    AndroidAnnotationTest

    通过这个实例,我们可以看到Android Annotation如何简化Android应用的编码工作,使代码更加整洁,逻辑更清晰。结合Gradle的便利性,Android Annotation成为了解决Android开发中重复工作和复杂性的有效手段。对于任何...

Global site tag (gtag.js) - Google Analytics