Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как создать свой блокнот в Android Studio? http://www.cyberforum.ru/android-dev/thread1713248.html
Для приложения хочу реализовать некий блокнот или заметки, где пользователь сможет пользуясь приложением делать заметки и сохранять их. Можете подсказать как реализовать это?
Программирование Android Как сделать так, чтобы мобильное приложение автоматически подстраивалось под размер экрана? В Android Studio мы же под определенную диагональ создаём приложение (один эмулятор).. Как при разработке сделать так, чтобы мобильное приложение корректно отображалось на всех диагоналях? ("4.7"... http://www.cyberforum.ru/android-dev/thread1713150.html
Простейшая работа с интерфейсом Программирование Android
Я уже далеко не начинающий программист, но на Джаве никогда ничего не писал. Решил попробовать что-то интересное под андроид написать. Думал, все так же просто, как в Delphi, но нет! У меня есть...
NoClassDefFoundError неизвестно из-за чего Программирование Android
Всем привет. В общем проблема оч интересного характера. Поддерживаю старый свой проект который делался еще в далеком 2012 году. Его поддерживали до меня еще три человека со слов заказчика которые...
Программирование Android Как сделать такое activity? http://www.cyberforum.ru/android-dev/thread1713059.html
Добрый день. Для начала по прошу держать свои камни при себе да бы они не попали в меня. Так как я начинающий в этом деле человек. Хочу сделать приложение у которого будет такое Activity. Как вы...
Программирование Android Замена текста в одном TextView Подскажите как сделать так, чтобы при нажатии на кнопку (Которая находится справа внизу), при каждом новом нажатии менялся текст в TextView и менялась картинка в ImageView. Если есть возможность,... подробнее

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

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

17.04.2016, 01:19. Просмотров 1147. Ответов 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();
    }
 
}
Подскажите, в чем загвоздка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru