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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
#1

Чтение из файла (отображение и изменение данных) - Android

22.10.2012, 19:45. Просмотров 2985. Ответов 17
Метки нет (Все метки)

Есть текстовый файл следующего содержания:

Volume=0
Mic=1
.....=0
.....=1
.....=2

Нужно прочитать параметры из файла и отобразить их визуально. (оптимально думаю в RadioGroup).
(Приложил файл с изображением.)
И также можно было изменить параметры (Через тот же RadioGroup) и сохранить/перезаписать их в этот же текстовый файл.

Можно ли передать состояние checked="true" RadioButton из файла?
Как реализовать еще возможно?
Что бы попроще.

Извиняюсь, начинаю изучать и много вопросов возникает.
Если можно пример.
Спасибо.
Миниатюры
Чтение из файла (отображение и изменение данных)  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
22.10.2012, 20:36     Чтение из файла (отображение и изменение данных) #2
checkBox.isChecked();
checkBox.setChecked(boolean);
radioGroup.getCheckedRadioButtonId();
radioGroup.check(id);
Чтение и запись файла - http://dumpz.org/97352/
data storage - http://developer.android.com/guide/t...a-storage.html
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
23.10.2012, 19:56  [ТС]     Чтение из файла (отображение и изменение данных) #3
V0v1k, Спасибо!
Дело понемножку продвигается.
А как бы компактнее и как можно проще разместить RadioGroup на форме?
Будет около 20 групп.
Вариант 1.
Можно все их поместить в ScrollView?
Вариант 2.
Вывести их наименование в ListView и по щелчку открывать ListPreference нужный RadioGroup?
Вариант 3.
Разместить с помощью snipper'ов?

Есть еще варианты?
Спасибо!
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.10.2012, 20:17     Чтение из файла (отображение и изменение данных) #4
я бы в ListView поместил наименование и по щелчку открывал бы диалог (http://developer.android.com/guide/t...ml#AddingAList)

а как это открывать ListPreference по щелчку на ListView?

Добавлено через 2 минуты
или имелся ввиду PreferenceActivity?
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
23.10.2012, 20:17  [ТС]     Чтение из файла (отображение и изменение данных) #5
Цитата Сообщение от V0v1k Посмотреть сообщение
я бы в ListView поместил наименование и по щелчку открывал бы диалог
Диалог нужен с RadioGroup, чтобы при его открытии можно было "видеть" текущее состояние RadioButton , состояние которое зацепится из файла.
Такая схема возможна?

а как это открывать ListPreference?
Спросил. Сам не знаю.

Спасибо.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.10.2012, 20:25     Чтение из файла (отображение и изменение данных) #6
Цитата Сообщение от Hanty86 Посмотреть сообщение
Диалог нужен с RadioGroup, чтобы при его открытии можно было "видеть" текущее состояние RadioButton
смотрите по ссылке приведенной выше раздел "Adding a persistent multiple-choice or single-choice list", там на рисунку multiple-choice для примера, думаю single-choice это именно то, что вам нужно.

а еще почитайте про PreferenceActivity
http://developer.android.com/referen...eActivity.html
может это лучше подойдет, зависит от ситуации.
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
24.10.2012, 09:11  [ТС]     Чтение из файла (отображение и изменение данных) #7
Есть рабочий пример с ListView и Activity по клику на списке ListView.
Как добавить для каждого пункта в ListView свой Dialog?
Можно в примере показать?
Спасибо.
Вложения
Тип файла: zip AndroidListView.zip (50.4 Кб, 12 просмотров)
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.10.2012, 11:42     Чтение из файла (отображение и изменение данных) #8
я вам дал ссылку где показано как создавать диалог, в вашем проекте показано как обрабатывать клик по пункту списка. что еще вам не хватает?
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
24.10.2012, 15:27  [ТС]     Чтение из файла (отображение и изменение данных) #9
С синтаксисом проблема.
Вот кусок кода:
Java
1
2
3
4
5
6
7
8
9
10
11
OnItemClickListener itemListener = new OnItemClickListener() {
 
            
            public void onItemClick(AdapterView<?> parent, View v,
                    int position, long id) {
                // TODO Auto-generated method stub
                showDialog(IDD_DIALOG_1);
                Toast.makeText(getApplicationContext(), "Вы выбрали "
                + position, Toast.LENGTH_SHORT).show();
            }
        };
Toast вывод мне выбранную позицию.
А как написать если выбранная позиция = 0 то показываем showDialog(IDD_DIALOG_1);
если выбранная позиция равна =1 то показываем showDialog(IDD_DIALOG_1);
Спасибо.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.10.2012, 17:09     Чтение из файла (отображение и изменение данных) #10
showDialog(position);

думаю можно обойтись 1 диалогом наполняя его каждый раз нужными айтемами.
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
24.10.2012, 18:34  [ТС]     Чтение из файла (отображение и изменение данных) #11
Класс! Работает, и не нужно case использовать.
Получилось вот что:
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
package com.example.testlisrview;
 
import java.util.ArrayList;
import java.util.Arrays;
 
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Toast;
 
public class MainActivity extends ListActivity {
    
    AlertDialog.Builder ad;
    Context context;
    
    //индентификатор диалогового окна
    private final int IDD_DIALOG_1 = 0;
    private final int IDD_DIALOG_2 = 1;
    private final int IDD_DIALOG_3 = 2;
 
    // определяем массив типа String
    final String[] catnames = new String[] { "Вопрос №1", "Вопрос №2", "Вопрос №3"};
 
    private ArrayAdapter<String> adapter;
 
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        OnItemClickListener itemListener = new OnItemClickListener()
        {
            @SuppressWarnings("deprecation")
            public void onItemClick(AdapterView<?> parent, View v,int position, long id) 
            {
                // TODO Auto-generated method stub
                showDialog(position);
                Toast.makeText(getApplicationContext(), "Вы выбрали "
                + position, Toast.LENGTH_SHORT).show();
            }
        };
        ArrayList<String> list = new ArrayList<String>(Arrays.asList(catnames));
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, list);
        // присваиваем адаптер списку
        setListAdapter(adapter);
        getListView().setOnItemClickListener(itemListener);
    }
    
    
    @Override
    protected Dialog onCreateDialog(int id) 
    {
        switch (id) 
        {
            case 0:
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                final String[] mChooseCats = { "Мурзик", "Барсик", "Пушок" };
                builder = new AlertDialog.Builder(this);
                builder.setTitle("Ваше любимое имя кота?")
                .setCancelable(false)
 
                // добавляем одну кнопку для закрытия диалога
                .setNeutralButton("Назад",new DialogInterface.OnClickListener() 
                    {
                        public void onClick(DialogInterface dialog, int id) 
                        {
                            dialog.cancel();
                        }
                    })
 
                // добавляем переключатели
                .setSingleChoiceItems(mChooseCats, -1, new DialogInterface.OnClickListener() 
                    {
                        public void onClick(DialogInterface dialog,int item) 
                        {
                            Toast.makeText(getApplicationContext(),"Любимое имя кота: "
                            + mChooseCats[item],Toast.LENGTH_SHORT).show();
                        }
                    });
            return builder.create();
            
            
        case 1:
            AlertDialog.Builder builder_2 = new AlertDialog.Builder(this);
            final String[] mChooseCats_2 = { "Шарик", "Тузик", "Бобик" };
            builder_2 = new AlertDialog.Builder(this);
            builder_2.setTitle("Ваше любимое имя собаки?")
            .setCancelable(false)
 
            // добавляем одну кнопку для закрытия диалога
            .setNeutralButton("Назад",new DialogInterface.OnClickListener() 
            {
                public void onClick(DialogInterface dialog, int id) 
                {
                    dialog.cancel();
                }
            })
 
            // добавляем переключатели
            .setSingleChoiceItems(mChooseCats_2, -1,new DialogInterface.OnClickListener() 
            {
                public void onClick(DialogInterface dialog,int item)
                {
                    Toast.makeText(getApplicationContext(),"Любимое имя собаки: "+ mChooseCats_2[item],
                    Toast.LENGTH_SHORT).show();
                }
            });
                    
            return builder_2.create();
        
        case 2:
            AlertDialog.Builder builder_3 = new AlertDialog.Builder(this);
            final String[] mChooseCats_3 = { "1", "2", "Больше двух" };
            builder_3 = new AlertDialog.Builder(this);
            builder_3.setTitle("Сколько у Вас домашних питомцев?")
            .setCancelable(false)
 
            // добавляем одну кнопку для закрытия диалога
            .setNeutralButton("Назад",new DialogInterface.OnClickListener() 
            {
                public void onClick(DialogInterface dialog, int id) 
                {
                    dialog.cancel();
                }
            })
 
            // добавляем переключатели
            .setSingleChoiceItems(mChooseCats_3, -1,new DialogInterface.OnClickListener() 
            {
                public void onClick(DialogInterface dialog,int item)
                {
                    Toast.makeText(getApplicationContext(),"У Вас домашних питомцев: "+ mChooseCats_3[item],
                    Toast.LENGTH_SHORT).show();
                }
            });
                    
            return builder_3.create();
        }
        return null;
    }
 
}
Как можно оптимизировать и использовать в данном случае 1 диалог и наполнять его разными айтемами?
Таких диалогов планируется использовать около 20-25.
Спасибо.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.10.2012, 19:15     Чтение из файла (отображение и изменение данных) #12
ну, например можно попробовать засунуть в метод setSingleChoiceItems ListAdapter, потом в адаптер вставлять нужные данные.
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
25.10.2012, 09:19  [ТС]     Чтение из файла (отображение и изменение данных) #13
Спасибо. Буду пробовать.
А как при открытии диалога включить один radiobutton?
setSingleChoiceItems?

Добавлено через 10 минут
Разобрался.
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
29.10.2012, 09:49  [ТС]     Чтение из файла (отображение и изменение данных) #14
С ListView и диалогами разобрался.
Теперь с файлами воюю.
Есть текстовый файл с содержанием:
Audio = 1
Mic = 2
Video = 0
Как можно найти эти записи и заменить их на свои:
Audio = 0
Mic = 1
Video = 1
Спасибо.

Добавлено через 6 минут
Просто найти эти значения:
Audio = 1
Mic = 2
Video = 0
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.10.2012, 14:06     Чтение из файла (отображение и изменение данных) #15
построчно читать и парсить.
потом записать обновленные данные.
я бы в json-e например держал бы эту инфу.
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
29.10.2012, 17:05  [ТС]     Чтение из файла (отображение и изменение данных) #16
Цитата Сообщение от V0v1k Посмотреть сообщение
потом записать обновленные данные.
С эти разобрался.
Цитата Сообщение от V0v1k Посмотреть сообщение
я бы в json-e например держал бы эту инфу.
Я эту инфу в переменные закинул, мне так удобно.

А как построчно читать и парсить можно пример под андроид?
Спасибо.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.10.2012, 19:12     Чтение из файла (отображение и изменение данных) #17
http://www.javapractices.com/topic/TopicAction.do?Id=42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2012, 13:35     Чтение из файла (отображение и изменение данных)
Еще ссылки по теме:

Android Чтение файла из облака
Android Чтение из файла в строку
Отображение текста (из файла) в textView Android
Android Чтение данных из файла
Android Чтение текстового файла

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Hanty86
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 33
31.10.2012, 13:35  [ТС]     Чтение из файла (отображение и изменение данных) #18
Буду изучать.
Как получить позицию в диалоге (0,1,2,3)?
Вот код:
Java
1
2
3
4
5
 public void onClick(DialogInterface dialog,int item) 
                        {
                            Toast.makeText(getApplicationContext(),"Любимое имя кота: "
                            + mChooseCats[item],Toast.LENGTH_SHORT).show();
                        }
mChooseCats[item] отображает наименование позиции.
Какой параметр передать, что то перепробовал кучу, не выходит чаша)

Добавлено через 1 час 24 минуты
Нашел
String.valueOf(item)

Добавлено через 23 часа 44 минуты
Собираю проект.
Добавил в основной проект функцию записи в файл.
Не работает!
Не могу понять почему.
Если отдельно в чистом проекте вызывать функцию работает.
Все одинаково.
Добавил для проверки сообщения.
Не обрабатывает BufferedWriter bw = new BufferedWriter(new FileWriter(sdFile));
Что может мешать или куда копать?
Спасибо.
Код:
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
//ЗАПИСЫВАЕМ В ФАЙЛ
void writeFileSD() {
       Toast.makeText(getApplicationContext(),"Запуск writeFileSD",Toast.LENGTH_SHORT).show();
        // проверяем доступность SD
        if (!Environment.getExternalStorageState().equals(
            Environment.MEDIA_MOUNTED)) {  
        Toast.makeText(getApplicationContext(),"SD-карта не доступна",Toast.LENGTH_SHORT).show(); 
        return;
        }
        Toast.makeText(getApplicationContext(),"SD-карта доступна",Toast.LENGTH_SHORT).show(); 
        // получаем путь к SD
        File sdPath = Environment.getExternalStorageDirectory();
        // добавляем свой каталог к пути
        sdPath = new File(sdPath.getAbsolutePath() + "/" + DIR_SD);
        // создаем каталог
        sdPath.mkdirs();
        // формируем объект File, который содержит путь к файлу
        File sdFile = new File(sdPath, FILENAME_SD);
        //Смотрим сформированный путь к файлу
        Toast.makeText(getApplicationContext(),sdFile.getAbsolutePath() ,Toast.LENGTH_SHORT).show(); 
        
        try 
        {   Toast.makeText(getApplicationContext(),"Проверка try",Toast.LENGTH_SHORT).show(); 
            // открываем поток для записи
            BufferedWriter bw = new BufferedWriter(new FileWriter(sdFile));
            // оповещаем,  что пишем данные
            Toast.makeText(getApplicationContext(),"Пишем в файл",Toast.LENGTH_SHORT).show();
            bw.write("123");
            // закрываем поток
            bw.close();
            Toast.makeText(getApplicationContext(),"Файл записан на SD: " + sdFile.getAbsolutePath(),Toast.LENGTH_SHORT).show();
        } 
        catch (IOException e) 
        {
          e.printStackTrace();
        }  
 
}
Добавлено через 1 час 11 минут
Балбес
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Добавлено через 1 час 35 минут
Намудрил с диалогами нужна помощь:
protected Dialog onCreateDialog(int id)
{
switch (id)
{
case 0:
AlertDialog.Builder builder_0 = new AlertDialog.Builder(this);
final String[] mSelectList_0 = { "1", "2", "3", "4"};
builder_0 = new AlertDialog.Builder(this);
builder_0.setTitle("Âûáåðèòå íóæíîå:")
//îòìåíÿåì âîçâðàò
.setCancelable(false)
// äîáàâëÿåì îäíó êíîïêó äëÿ çàêðûòèÿ äèàëîãà
.setNeutralButton("Íàçàä",new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
}
})
// äîáàâëÿåì ïåðåêëþ÷àòåëè
// âêëþ÷àåì íóæíûé ïåðåêëþ÷àòåëü (RaidoButton) ÷åðåç ïåðåìåííóþ Resolution
.setSingleChoiceItems(mSelectList_0, Resolution0 , new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,int item)
{
Resolution = Integer.valueOf(item).intValue();
}

});
return builder_0.create();


case 1:
AlertDialog.Builder builder_1 = new AlertDialog.Builder(this);
final String[] mSelectList_1 = { "111", "222", "333", "444"};
builder_1 = new AlertDialog.Builder(this);
builder_1.setTitle("1111:")
.setCancelable(false)
.setNeutralButton("Back",new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
}
})
.setSingleChoiceItems(mSelectList_1, Resolution1 , new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,int item)
{
Resolution = Integer.valueOf(item).intValue();
}

});
return builder_1.create();

case 2:
AlertDialog.Builder builder_2 = new AlertDialog.Builder(this);
final String[] mSelectList_2 = { "1111", "2222", "3333", "4444"};
builder_2 = new AlertDialog.Builder(this);
builder_2.setTitle("Âûáåðèòå íóæíîå:")
//îòìåíÿåì âîçâðàò
.setCancelable(false)
// äîáàâëÿåì îäíó êíîïêó äëÿ çàêðûòèÿ äèàëîãà
.setNeutralButton("Íàçàä",new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
}
})
// äîáàâëÿåì ïåðåêëþ÷àòåëè
// âêëþ÷àåì íóæíûé ïåðåêëþ÷àòåëü (RaidoButton) ÷åðåç ïåðåìåííóþ Resolution
.setSingleChoiceItems(mSelectList_2, Resolution2 , new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,int item)
{
Resolution = Integer.valueOf(item).intValue();
}

});
return builder_2.create();
}
return null;

}
Yandex
Объявления
31.10.2012, 13:35     Чтение из файла (отображение и изменение данных)
Ответ Создать тему
Опции темы

Текущее время: 21:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru