• Какую IDE выбрать для разработки под Android?

    anyd3v
    @anyd3v
    Android Studio, она базируется на IntelliJ IDEA, только android plugin на много развитее, тк его в первую очередь делают для Android Studio а потом вносят в IDEA
    Ответ написан
    7 комментариев
  • Библиотека Android Sqllite ORM

    @FoxInSox
    Пользуюсь ORMLite. Впечатления исключительно положительные. Разработчик библиотеки активно откликается на возникающие проблемы и вопросы.
    Ответ написан
    1 комментарий
  • Как в Eclipse сделать перемещение объекта вместе с пальцем?

    @GSysoev
    для api > 7 есть хорошая библиотека https://github.com/mrKlar/PagedDragDropGrid
    которую довольно легко допилить под свои нужды
    вот видео-пример www.youtube.com/watch?v=FYTSRfthSuQ&feature=youtu.be
    Ответ написан
    Комментировать
  • Как найти ошибку в коде java на android?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Вот описание ошибки и адрес к ней:
    02-19 12:57:42.807: E/AndroidRuntime(964): java.lang.IllegalArgumentException: column 'img' does not exist
    02-19 12:57:42.807: E/AndroidRuntime(964): 	at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:302)
    02-19 12:57:42.807: E/AndroidRuntime(964): 	at android.support.v4.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:317)
    02-19 12:57:42.807: E/AndroidRuntime(964): 	at android.support.v4.widget.SimpleCursorAdapter.swapCursor(SimpleCursorAdapter.java:328)
    02-19 12:57:42.807: E/AndroidRuntime(964): 	at com.example.mytime.MainActivity.onLoadFinished(MainActivity.java:104)

    То есть ошибка происходит при заполнении адаптера. В методе onCreate() в MainActivity.java у вас есть такой код:
    String[] from = new String[] { DB.COLUMN_NAME, DB.COLUMN_TIME };
    int[] to = new int[] { R.id.tvTextName, R.id.tvText_time};
    
    // создааем адаптер и настраиваем список
            
    scAdapter = new SimpleCursorAdapter(this, R.layout.item, null, from, to, 0);
    lvData = (ListView) findViewById(R.id.lvData);
    lvData.setAdapter(scAdapter);

    Убедитесь, что R.id.tvTextName и R.id.tvText_time соответствуют правильным названиям столбцов БД. Ну, и как написал @sagus, убедитесь, что версия вашей таблицы соответствует вашему описанию в коде.
    Ответ написан
    Комментировать
  • Как правильно реализовать поддержку нескольких экранов под Android?

    @Mintormo
    Не стоит привязываться к конкретному разрешению. Вы прекрасно знаете что различных экранов уйма. Возможно, стоит разбить все основные разрешения на несколько подгрупп и делать для каждой отдельный дизайн.
    Ответ написан
    1 комментарий
  • Как решить ошибку с ListView и AsyncTask в Android?

    TonyCode
    @TonyCode
    Цепляемся за следующую строку Logcat-а:

    "Make sure the content of your adapter is not modified from a background thread, but only from the UI thread."


    Далее видим в AsyncTask следующее:

    @Override
        protected Void doInBackground(Void... params) {
                LINK = "here is link for json";
                obj = Helpers.getJson(LINK);
                if (obj != null) {
                    Helpers.refreshListView(obj, tempList);
                }
            return null;
        }


    Ошибка:

    Helpers.refreshListView(obj, tempList); вызывается в методе doInBackground() которая выполняется в background thread!

    Решение:

    Вынести вызов refreshListView() в метод onProgressUpdate() AsyncTask-а (который уже выполняется на UI Thread!):

    protected Void doInBackground(Void... params) {
        // ...
        publishProgress(new MyProgress(obj, tempList));
        // ...
    }
    
    protected void onProgressUpdate(MyProgress... progress) {
        if (progress.size() > 0) {
            Helpers.refreshListView(progress[0].getObj(), progress[0].getTempList());
        }
    }


    ---
    Upd: Подробнее - т.к. в UIThread надо передавать и obj и tempList - то для них нужно сделать класс-wrapper, например так - (каждый класс в своём файле, естественно)

    public class LoadWall extends AsyncTask<Void, MyProgress, Void> {
        // ...
        @Override
        protected Void doInBackground(Void... params) {
            // ...
            publishProgress(new MyProgress(obj, tempList));
            // ...
        }
    
        @Override
        protected void onProgressUpdate(MyProgress... progress) {
            if (progress.size() > 0) {
                Helpers.refreshListView(progress[0].getObj(), progress[0].getTempList());
            }
        }
        // ...
    }
    
    /**
     * Используется для передачи прогресса в UI-Thread
     */
    public class MyProgress {
    
        private final Object obj;
        private final ArrayList<LinkedHashMap<String, String>> tempList;
    
        public MyProgress(Object obj, ArrayList<LinkedHashMap<String, String>> tempList) {
            this.obj      = obj;
            this.tempList = tempList;
        }
    
        public Object getObj() {
            return obj;
        }
    
        public ArrayList<LinkedHashMap<String, String>> getTempList() {
            return tempList;
        }
    }
    Ответ написан
    2 комментария
  • Вопрос по android верстке?

    BeLove
    @BeLove
    security
    Ридонли пользователь yasevich подсказал:
    Нужно в main прописать
    android:layout_toLeftOf="@id/icurrency". 
    
    Ну и соответствующим образом упорядочить элементы в XML.
    Ответ написан
    Комментировать
  • Помощь в верстки дизайна в Android

    Когда указываете layout_weight, попробуйте поиграться с соответствующими параметрами layout_width и layout_height. Я не помню подробностей, но либо wrap_content, либо 0dp должен подойти, если я правильно понял задачу.

    Ну и заодно, некрасиво использовать рядом match_parent и fill_parent.
    Ответ написан
    1 комментарий