Форум программистов, компьютерный форум CyberForum.ru

Восстановление позиции ListView по возвращении из другого Activity - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Как создать свой блокнот в Android Studio? http://www.cyberforum.ru/android-dev/thread1713248.html
Для приложения хочу реализовать некий блокнот или заметки, где пользователь сможет пользуясь приложением делать заметки и сохранять их. Можете подсказать как реализовать это?
Android Как сделать так, чтобы мобильное приложение автоматически подстраивалось под размер экрана? В Android Studio мы же под определенную диагональ создаём приложение (один эмулятор).. Как при разработке сделать так, чтобы мобильное приложение корректно отображалось на всех диагоналях? ("4.7" "4.5" "5.7" "5.0" и т.д.) http://www.cyberforum.ru/android-dev/thread1713150.html
Простейшая работа с интерфейсом Android
Я уже далеко не начинающий программист, но на Джаве никогда ничего не писал. Решил попробовать что-то интересное под андроид написать. Думал, все так же просто, как в Delphi, но нет! У меня есть ImageView, как мне установить свойство .ROTATION в какое-то значение? Делаю так: ImageView.ROTATION = 10; Ругается. Может, я что-то не подключил или забыл? И еще: если знаете, как добавлять события,...
NoClassDefFoundError неизвестно из-за чего Android
Всем привет. В общем проблема оч интересного характера. Поддерживаю старый свой проект который делался еще в далеком 2012 году. Его поддерживали до меня еще три человека со слов заказчика которые делали там разные фичи, добавляли баги, фиксили баги ну и т. д. Недавно я снова взялся за поддержку проекта, сразу после этого я взялся за голову с того что там понаписывали, скока говнокода там...
Android Как сделать такое activity? http://www.cyberforum.ru/android-dev/thread1713059.html
Добрый день. Для начала по прошу держать свои камни при себе да бы они не попали в меня. Так как я начинающий в этом деле человек. Хочу сделать приложение у которого будет такое Activity. Как вы видите на рисунке 1 это приложение в фоне. Так же можно открыть любое приложение и это приложение тоже будет в фоне. При нажатии на это приложение оно открывается (см. рисунок 2). Хочу сделать...
Android Замена текста в одном TextView Подскажите как сделать так, чтобы при нажатии на кнопку (Которая находится справа внизу), при каждом новом нажатии менялся текст в TextView и менялась картинка в ImageView. Если есть возможность, выведите код, который необходимо вписать, чтобы получилось желаемое действие. public class MainActivity extends AppCompatActivity { private TextView mText; @Override protected... подробнее

Показать сообщение отдельно
gelios_oleg
1 / 1 / 0
Регистрация: 01.02.2016
Сообщений: 13

Восстановление позиции ListView по возвращении из другого Activity - Android

17.04.2016, 01:19. Просмотров 618. Ответов 13
Метки (Все метки)

Доброго времени суток.

Имеется activity с ListView, заполняемого из базы данных. При нажатии элемента идёт переход на новое активити с передачей в него данных. По возвращении обратно хотелось бы, чтобы позиция списка сохранялась. Пересмотрел кучу ответов и пробовал все варианты - ни один не работает, при возвращении список отображается сначала, уже не знаю как решить проблему. Последний вариант выглядит так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.FilterQueryProvider;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import java.sql.SQLException;
 
public class ElectroActivity extends AppCompatActivity {
 
    EditText objectFilter;
    ListView objectList;
    DatabaseHelper sqlHelper;
    Cursor userCursor;
    SimpleCursorAdapter userAdapter;
    //Parcelable state;
    private static final String LIST_STATE = "listState";
    private Parcelable mListState = null;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_electro);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 
        objectFilter = (EditText)findViewById(R.id.objectFilter);
        objectList = (ListView)findViewById(R.id.objectList);
        sqlHelper = new DatabaseHelper(getApplicationContext());
        // создаем базу данных
        sqlHelper.create_db();
       }
 
    @Override
    protected void onRestoreInstanceState(Bundle state) {
        super.onRestoreInstanceState(state);
        mListState = state.getParcelable(LIST_STATE);
    }
 
    @Override
    public void onResume(){
        super.onResume();
        try {
            sqlHelper.open();
            userCursor = sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE, null);
            String[] headers = new String[]{DatabaseHelper.COLUMN_NAME, DatabaseHelper.COLUMN_ENERGY,
                DatabaseHelper.COLUMN_SET, DatabaseHelper.COLUMN_ID};
            userAdapter = new SimpleCursorAdapter(this, R.layout.my_list_item,
                userCursor, headers, new int[]{R.id.textname, R.id.textenergy, R.id.textset}, 0);
 
            objectList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Cursor cursor = (Cursor)objectList.getItemAtPosition(position);
 
                    Intent intent = new Intent(getApplicationContext(), ElDataActivity.class);
                    //intent.putExtra("id",cursor.getString(userCursor.getColumnIndex("_id")));
                    intent.putExtra("object", cursor.getString(userCursor.getColumnIndex("objects")));
                    intent.putExtra("balans", cursor.getString(userCursor.getColumnIndex("balans")));
                    intent.putExtra("napr", cursor.getString(userCursor.getColumnIndex("napr")));
                    intent.putExtra("numTP", cursor.getString(userCursor.getColumnIndex("numTP")));
                    intent.putExtra("numTR", cursor.getString(userCursor.getColumnIndex("numTR")));
                    intent.putExtra("sumTR", cursor.getString(userCursor.getColumnIndex("sumTR")));
                    intent.putExtra("set", cursor.getString(userCursor.getColumnIndex("set")));
                    intent.putExtra("energy", cursor.getString(userCursor.getColumnIndex("energy")));
                    intent.putExtra("kat", cursor.getString(userCursor.getColumnIndex("kat")));
                    intent.putExtra("razr", cursor.getString(userCursor.getColumnIndex("pazr")));
                    intent.putExtra("ust", cursor.getString(userCursor.getColumnIndex("ust")));
                    /*intent.putExtra("balans", DatabaseHelper.COLUMN_BAL);*/
                    //state = objectList.onSaveInstanceState();
                    startActivity(intent);
                }
            });
 
            // если в текстовом поле есть текст, выполняем фильтрацию
            // данная проверка нужна при переходе от одной ориентации экрана к другой
            if(!objectFilter.getText().toString().isEmpty())
                userAdapter.getFilter().filter(objectFilter.getText().toString());
 
            // установка слушателя изменения текста
            objectFilter.addTextChangedListener(new TextWatcher() {
 
                public void afterTextChanged(Editable s) {
                }
 
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                }
                // при изменении текста выполняем фильтрацию
                public void onTextChanged(CharSequence s, int start, int before, int count) {
 
                    userAdapter.getFilter().filter(s.toString());
                }
            });
 
            // устанавливаем провайдер фильтрации
            userAdapter.setFilterQueryProvider(new FilterQueryProvider() {
                @Override
                public Cursor runQuery(CharSequence constraint) {
 
                    if (constraint == null || constraint.length() == 0) {
 
                        return sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE, null);
                    } else {
                        return sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE + " where " +
                                DatabaseHelper.COLUMN_NAME + " like ?", new String[]{"%" + constraint.toString() + "%"});
                    }
                }
            });
 
            //сохраняем положение ListView
            //Parcelable state = objectList.onSaveInstanceState();
 
            //обновляем ListView
            if (mListState != null) {
                objectList.onRestoreInstanceState(mListState);
                mListState = null;
            }
            objectList.setAdapter(userAdapter);
 
            //Восстанавливаем положение ListView
            //objectList.onRestoreInstanceState(state);
            //if(state != null) {
            //    objectList.onRestoreInstanceState(state);
            //}
            //userAdapter.notifyDataSetChanged();
 
        }
        catch (SQLException ex){}
    }
 
    @Override
    protected void onSaveInstanceState(Bundle state) {
        super.onSaveInstanceState(state);
        mListState = objectList.onSaveInstanceState();
        state.putParcelable(LIST_STATE, mListState);
    }
 
    /*@Override
    public void onPause() {
        state = objectList.onSaveInstanceState();
        super.onPause();
    }*/
 
    @Override
    public void onDestroy(){
        super.onDestroy();
        // Закрываем подключения
        sqlHelper.database.close();
        userCursor.close();
        //state = objectList.onSaveInstanceState();
    }
 
}
Подскажите, в чем загвоздка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru