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

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

Войти
Регистрация
Восстановить пароль
 
poparabole
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 9
#1

Передача двойного массива в другое активити - Программирование Android

04.09.2014, 15:26. Просмотров 652. Ответов 15
Метки нет (Все метки)

помогите с передачей данных из адаптера в активити из двойного массива, мне нужно так чтобы соблюдалось id по нажатию на кнопку, если проще, то по нажатию на уровень передаются данные нажатого уровня в другое активити.
Код адаптера:
Javascript
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
package com.example.mygames;
 
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
 
public class lvladapter extends BaseAdapter {
    private Context mContext;
    
    public tasklvl[] lvl = {
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new, "son"),
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new1, "son2"),
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new, "son3")
    };
    
    public lvladapter(Context c) {
        mContext = c;
    }
    
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return lvl.length; 
    }
 
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return lvl[position];
    }
 
    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }
 
    
    
    @Override
    public View getView(final int position, View arg1, ViewGroup arg2) {
        Button button = new Button(mContext);
        button.setText(String.valueOf(position+1)); 
        button.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(mContext, actActionLvl.class);
                
                mContext.startActivity(intent);
                
                
            }
            
      });
        return button;
    }
    
 
}
Код tasklvl, на всякий случай:
Javascript
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
package com.example.mygames;
 
public class tasklvl {
    private String  url, otvet;
    private Boolean win;
    
    public tasklvl (String  url, String otvet) {
        this.url = url;
        this.otvet = otvet;
        this.win = false;
        }
    
    public String geturl () {
        return this.url;    
    }   
    public void seturl (String u) {
        this.url = u;       
    }   
    
    public String getotvet () {
        return this.otvet;  
    }   
    public void setotvet (String o) {
        this.otvet = o;     
    }
    public Boolean getwin () {
        return this.win;    
    }   
    public void setwin (Boolean w) {
        this.win = w;       
    }
    
    public Boolean proverka (String text) {
        if (text.equalsIgnoreCase(this.getotvet())) {
            return true;
        } 
        else {
            return false;
        }   
    }
    
    
}
я так понял нужно прописать intent.putExtra(); а вот что в скобках не могу разобраться как правильно написать чтобы мои параметры из двойного массива передались, и как их извлечь во втором активити тоже не до конца понимаю, помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2014, 15:26     Передача двойного массива в другое активити
Посмотрите здесь:

Передача двойного массива в другое активити - Программирование Android
Доброго времени суток, возникла проблема с массивом! Пытаюсь передать через putExtra двойной массив в другое активити и оно не хочет...

Передача с одного активити в другое - Программирование Android
Помогите!!!Есть два активити в первом я ввожу данные в editText как мне сделать передачу в listview другого активити.Я сделал но у меня...

Передача константы в другое активити - Программирование Android
Здравствуйте. Задача такая: нужно из одного активити передать в другое константу с именем xml файла. т.е. в первом активити при...

Передача данных в другое активити - Программирование Android
Доброго времени суток, возникла проблема со списком! Собственно нужно выбранный элемент из списка передать в другую активность и...

Не передаются значения при их передаче в другое активити - Программирование Android
Собственно, обработчик по клику в первом активти: Intent shopintent = new Intent(MainActivity.this, Shop.class); ...

Как вызвать другое активити в контексном меню - Программирование Android
Как вызвать другое активити в контексном меню

Как правильно организовать переход с одного активити на другое с паролем - Программирование Android
Как правильно организовать переход с одного активити на другое с паролем (на первом активити вводится пароль и при верном вводе, чтобы...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
04.09.2014, 15:34     Передача двойного массива в другое активити #2
poparabole,
1.
Цитата Сообщение от poparabole Посмотреть сообщение
@Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; }
тут
Java
1
return arg0;
2. А где тут двойной массив? Тут только одинарный.

Цитата Сообщение от poparabole Посмотреть сообщение
Intent intent = new Intent(mContext, actActionLvl.class); mContext.startActivity(intent);
Java
1
2
3
4
Intent intent = new Intent(mContext, actActionLvl.class);
Bundle args = new Bundle();
args.putInt("Key", position+1);
mContext.startActivity(intent, args);
А в actActionLvl активити принимаем аргумент в onCreate

Java
1
int key = getIntent().getIntExtra("Key", 0);
poparabole
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 9
04.09.2014, 15:54  [ТС]     Передача двойного массива в другое активити #3
вот здесь у меня два параметра, ссылка на видео и ответ
Javascript
1
2
3
4
5
public tasklvl[] lvl = {
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new, "son"),
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new1, "son2"),
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new, "son3")
    };
Javascript
1
2
3
4
5
public tasklvl (String  url, String otvet) {
        this.url = url;
        this.otvet = otvet;
        this.win = false;
        }
подскажите пожалуйста, на моем примере как подставить эти параметры в мой активити, я новичок, мой код возможно не совсем правильный(
Javascript
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
package com.example.mygames;
 
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.VideoView;
 
 
public class actActionLvl extends Activity implements OnClickListener {
 
        Button ok;
        EditText otvet;
        TextView rezalt;
        VideoView vv01;
    
        tasklvl lvl1 = new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new, "son");  
        
        public void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainlvl);
 
 
          
           ok = (Button) findViewById(R.id.ok);
           otvet = (EditText) findViewById(R.id.otvet);
           ok.setOnClickListener(this); 
           rezalt = (TextView) findViewById(R.id.rezalt);
 
           
           
           VideoView vv = (VideoView)this.findViewById(R.id.vv01);      
           Uri video = Uri.parse(lvl1.geturl());
           vv.setVideoURI(video);       
           vv.start();
           
           
            OnClickListener oclBtnOk = new OnClickListener() {
                @Override
                public void onClick(View v) {
                    String otv = otvet.getText().toString();
                    switch (v.getId()) {
                    case R.id.ok:
                    if (lvl1.proverka(otv)) {
                        rezalt.setText("правильно");
                    }  else {
                        
                        rezalt.setText("Неправильно");
                    }
                  
                    
                      break;
                      
                    }
  
                }
              };
            
              ok.setOnClickListener(oclBtnOk);
              
              
              
     
    
    
    }
 
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        
    }       
}
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
04.09.2014, 16:17     Передача двойного массива в другое активити #4
poparabole, это, как я понимаю, выбор уровня? Т.е. надо передать выбранный уровень в другое активити?
poparabole
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 9
04.09.2014, 16:32  [ТС]     Передача двойного массива в другое активити #5
да, это выбор уровня, нужно передать данные из этого
Javascript
1
2
3
4
5
public tasklvl[] lvl = {
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new, "son"),
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new1, "son2"),
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new, "son3")
    };
тут два параметра, ссылка на видео (ее нужно привязать к видео вью), и ответ тоже передать к форме сравнения, ну и чтобы передавалось по нажатию на уровень свой уровень, спасибо что вникаешь и помогаешь)
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
04.09.2014, 16:53     Передача двойного массива в другое активити #6
Цитата Сообщение от poparabole Посмотреть сообщение
public class tasklvl
меняем на
Java
1
public class tasklvl implements Serializable

Java
1
2
3
Bundle args = new Bundle();
args.putSerializable("Key", getItem(position));
mContext.startActivity(intent, args);
ловим в другой активити
Цитата Сообщение от poparabole Посмотреть сообщение
Button ok;
* * * * EditText otvet;
* * * * TextView rezalt;
* * * * VideoView vv01;
tasklvl lvl1 = new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new, "son");
меняем на
Java
1
2
3
4
5
Button ok;
* * * * EditText otvet;
* * * * TextView rezalt;
* * * * VideoView vv01;
tasklvl lvl1;
В onCreate дописываем после строчки
Цитата Сообщение от poparabole Посмотреть сообщение
setContentView(R.layout.mainlvl);
Java
1
lvl1 = (tasklvl) getIntent().getSerializable("Key");
Вкратце что это значит:

0. Дописываем implements Serializable для класса с данными, чтобы можно было его пробросить через Bundle.
1. Ловим клик на итеме. Получаем его методом getItem(int posision).
2. Суём его в bundle, запускаем активити.
3. Ловим его в другом активити.
poparabole
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 9
04.09.2014, 17:31  [ТС]     Передача двойного массива в другое активити #7
Если я все сделал правильно, то что то не работает(

поменял в таске
Javascript
1
2
3
4
5
6
7
8
9
public class tasklvl  implements Serializable{
    private String  url, otvet;
    private Boolean win;
    
    public tasklvl (String  url, String otvet) {
        this.url = url;
        this.otvet = otvet;
        this.win = false;
        }
В адаптере дописал

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public View getView(final int position, View arg1, ViewGroup arg2) {
        Button button = new Button(mContext);
        button.setText(String.valueOf(position+1)); 
        button.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(mContext, actActionLvl.class);
 
                Bundle args = new Bundle();
                args.putSerializable("Key", getItem(position));
                mContext.startActivity(intent, args);
                
                
            }
            
      });
в строчке args.putSerializable("Key", getItem(position)); подчеркивает putSerializable, пишет in the type Bundle is not applicable for the arguments (String, Object)

дальше в активити дописал еще пару строк по описанию
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
public class actActionLvl extends Activity implements OnClickListener {
 
        Button ok;
        EditText otvet;
        TextView rezalt;
        VideoView vv01;
        tasklvl lvl1;
        
        
        public void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainlvl);
        lvl1 = (tasklvl) getIntent().getSerializable("Key");
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
04.09.2014, 17:35     Передача двойного массива в другое активити #8
Цитата Сообщение от poparabole Посмотреть сообщение
public Object getItem(int position)
в адаптере замените на
Java
1
public tasklvl getItem(int position)
poparabole
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 9
04.09.2014, 17:56  [ТС]     Передача двойного массива в другое активити #9
спасибо большое, но теперь в этой строке ошибка((
mContext.startActivities(intent, args);
подчеркивает startActivities
Call requires API level 16 (current min is 10): android.content.Context#startActivity
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
04.09.2014, 18:27     Передача двойного массива в другое активити #10
poparabole, а, да. Там же не так будет.

Java
1
2
intent.putExtra("Key", getItem(position));
startActivity(intent);
Bundle вообще не нужен будет.
poparabole
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 9
04.09.2014, 18:54  [ТС]     Передача двойного массива в другое активити #11
сделал, работает только не совсем, только первые данные на всех кнопках показывает, у меня еще один активити есть я про него не писал он отображает только gridview, может в нем чего то не хватает?
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.example.mygames;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.GridView;
 
 
public class lvlActivity extends Activity {
    
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lvl);
        
        GridView gridView = (GridView) findViewById(R.id.gvMain);
        gridView.setAdapter(new lvladapter(this));
            
    }
}
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
04.09.2014, 19:02     Передача двойного массива в другое активити #12
poparabole, всё будет точно также. Адаптер-то не меняется.
poparabole
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 9
04.09.2014, 19:07  [ТС]     Передача двойного массива в другое активити #13
это хорошо, а почему данные не меняются, только первой записи показывает по нажатию на все кнопки?
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
04.09.2014, 19:28     Передача двойного массива в другое активити #14
Цитата Сообщение от poparabole Посмотреть сообщение
@Override
* * public long getItemId(int arg0) {
* * * * // TODO Auto-generated method stub
* * * * return 0;
* * }
должно быть return arg0; а не return 0;
poparabole
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 9
04.09.2014, 22:27  [ТС]     Передача двойного массива в другое активити #15
да, у меня так и было, я уже исправлял это...

Добавлено через 1 час 2 минуты
вот полный код
Javascript
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
package com.example.mygames;
 
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
 
public class lvladapter extends BaseAdapter {
    private Context mContext;
    
    public tasklvl[] lvl = {
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new, "son"),
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.trolley_new, "sona"),
    new tasklvl ("android.resource://com.example.mygames/raw/" + R.raw.son_new, "sons")
    };
    
    public lvladapter(Context c) {
        mContext = c;
    }
    
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return lvl.length; 
    }
 
    @Override
    public tasklvl getItem(int position) {
        // TODO Auto-generated method stub
        return lvl[position];
    }
 
    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }
 
    
    
    @Override
    public View getView(final int position, View arg1, ViewGroup arg2) {
        Button button = new Button(mContext);
        button.setText(String.valueOf(position+1)); 
        button.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(mContext, actActionLvl.class);
 
                intent.putExtra("Key", getItem(position));
                mContext.startActivity(intent);
                
            }
            
      });
        return button;
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2014, 11:29     Передача двойного массива в другое активити
Еще ссылки по теме:

Можно ли скопировать текст в одном активити, и вставить через буфер обмена в другое? - Программирование Android
как используя буфер обмена (класс clipboard )скопировать текст в одном активити и вставить из буфера обмена в другое?Можно ли так делать...

Передача чисел между активити - Программирование Android
Реакция на нажатие кнопки, переход в другое активити и передача значения переменной GAME_SCORE = 15; Intent intent = new...

Передача данных между Активити - Программирование Android
Все никак не могу разобраться, как передавать данные между активити? я до этого пользовался статическими полями, но это кажется не совсем...

Передача данных между активити - Программирование Android
как сделать так чтобы при нажатии на кнопку в первом активити изменялись данные во втором активити, но без перехода в него, а переход...

Передача ссылки на объект между Активити - Программирование Android
Добрый день уважаемые! Подскажите пожалуйста как передать ссылку на объект в другое активити, а потом получить обратно ссылку именно...


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

Или воспользуйтесь поиском по форуму:
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
05.09.2014, 11:29     Передача двойного массива в другое активити #16
poparabole, выглядит правильно всё.
Yandex
Объявления
05.09.2014, 11:29     Передача двойного массива в другое активити
Ответ Создать тему
Опции темы

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