Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
if (самоподписанный сертификат?) {
schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 443));
} else {
schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
}
ClientConnectionManager connManager = new ThreadSafeClientConnManager(params, schemeRegistry);
httpClient = new DefaultHttpClient(connManager, params);
RestAdapter.Builder().setServer(..).setClient(new ApacheClient(client))А не сравнивали retrofit и android annotations в части работы с REST? Сам android annotations для этого не пользовал, интересно услышать впечатления.
Android Annotations иногда чудеса вытворяет — во-первых, нужно сконфигурировать IDE, во-вторых, иногда eclipse сходит с ума и не видит сгенеренные им классы
import android.app.Activity;
import android.graphics.Bitmap;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import com.androidquery.AQuery;
import com.androidquery.util.AQUtility;
import org.json.JSONObject;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: recoil
* Date: 06.09.13
* Time: 15:15
* To change this template use File | Settings | File Templates.
*/
public class AdpShowcase extends BaseAdapter{
private Activity activity;
private List<JSONObject> data;
protected AQuery listAq;
int width;
Bitmap placeholder,type3d,typePano,typeSlide,typeAnim,typeVideo,placeholderbuild;
public AdpShowcase(Activity _activity, List<JSONObject> _data) {
activity = _activity;
data = _data;
listAq = new AQuery(activity);
placeholder = listAq.getCachedImage(R.drawable.placeholder);
placeholderbuild = listAq.getCachedImage(R.drawable.m_placeholder_construction);
type3d = listAq.getCachedImage(R.drawable.m_type_icons_catalog_3dphoto);
typePano = listAq.getCachedImage(R.drawable.m_type_icons_catalog_panorama);
typeSlide = listAq.getCachedImage(R.drawable.m_type_icons_catalog_slideshow);
typeAnim = listAq.getCachedImage(R.drawable.m_type_icons_catalog_animation);
typeVideo = listAq.getCachedImage(R.drawable.m_type_icons_catalog_video);
width = (activity.getWindowManager().getDefaultDisplay().getWidth()-Utils.dpToPx(8))/2;
AQUtility.debug("width",width);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = activity.getLayoutInflater().inflate(R.layout.item_grid_showcase, parent, false);
}
JSONObject o = data.get(position);
String img = "";
int type = 1;
int subtype = 1;
try {
type = o.optInt("type");
subtype = o.optInt("subType");
JSONObject jsonObject = o.getJSONObject("placeholder");
jsonObject = jsonObject.getJSONObject("sprite");
img = "http:"+jsonObject.getString("url");
if (position==0)
AQUtility.debug("JSON adapter",img);
}
catch (Exception e) {e.printStackTrace();}
AQuery aq = listAq.recycle(view);
aq.id(R.id.iv_object).width(width,false);
aq.id(R.id.iv_object).height(width,false);
if(aq.shouldDelay(position, view, parent, img)){
aq.id(R.id.iv_object).image(placeholder, 1f);
aq.id(R.id.icon_type).image(null,1f);
}else{
if (!img.contains("/0.jpg")) {
aq.id(R.id.iv_object).image(img, true, false, width, 0, placeholder, AQuery.FADE_IN_NETWORK, 1f);
}
else {
aq.id(R.id.iv_object).image(placeholderbuild,1f);
}
if (type==5 && (subtype==5 || subtype==0)) {
aq.id(R.id.icon_type).image(typeVideo);
}
else {
switch (subtype) {
case 10:
aq.id(R.id.icon_type).image(typeSlide);
break;
case 8:
aq.id(R.id.icon_type).image(typeAnim);
break;
default:
if (type==2) {
aq.id(R.id.icon_type).image(typePano);
}
else {
aq.id(R.id.icon_type).image(type3d);
}
break;
}
}
}
return view;
}
}
//fetch and set the image from internet, cache with file and memory
aq.id(R.id.image1).image("http://www.vikispot.com/z/images/vikispot/android-w.png");
Но а что если вам нужно получить какие-то данные, на основе них что-то записать в БД и, например, записать что-нибудь в файлик?
Но а что если вам нужно получить какие-то данные, на основе них что-то записать в БД и, например, записать что-нибудь в файлик?
select a,b,c,d from table и последующий проход по результатам вперед работает до тех пор, пока не налистается 1 мб данных, после чего методы cursor.getXXX(int) начинают возвращать ошибки вида IllegalStateException Couldn't read row 3, col 7 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
AndroidAnnotations. Мощнейший инструмент, главное не юзать Background
buildscript {
repositories {
mavenCentral()
}
dependencies {
// добавляем плагин из репозитория, он там есть, обратите внимание, что подключение идет для buildscript
classpath 'com.github.hamsterksu:android-aptlibs-gradle-plugin:1.0.0'
}
}
// вот мы его активируем
apply plugin: 'aptlibs'
aptlibs {
// тут можно все перечисленные в статье библиотеки подключить (annotatedSql, androidAnnotations, groundy)
// для примера подключаем annotatedSql
annotatedSql {
version '1.7.8' // ОБЯЗАТЕЛЬНО УКАЗАТЬ ВЕРСИЮ! а то ничего не заработает
}
}
public static TaskHandler start(Context context, BaseFindPrinterCallback callback) {
return Groundy.create(FindPrinterCommand.class).callback(callback).queueUsing(context);
}
public static abstract class BaseFindPrinterCallback {
@OnSuccess(FindPrinterCommand.class)
public void onSuccess() {
onSearchFinished();
}
@OnCallback(value = FindPrinterCommand.class, name = CALLBACK_ADD_PRINTER)
public void onAddPrinter(@Param(EXTRA_PRINTER) PrinterInfo printerInfo) {
handleAddPrinter(printerInfo);
}
protected abstract void onSearchFinished();
protected abstract void handleAddPrinter(PrinterInfo printerInfo);
}
Еще раз об архитектуре Android приложения или джентльменский набор библиотек