Страница 1 из 1

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

Добавлено: 04 сен 2014, 14:35
poparabole
помогите с передачей данных из адаптера в активити из двойного массива, мне нужно так чтобы соблюдалось id по нажатию на кнопку, если проще, то по нажатию на уровень передаются данные нажатого уровня в другое активити.
Код адаптера:

Код: Выделить всё

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);
            	intent.putExtra("url", lvl[position].toString());
                
            	mContext.startActivity(intent);
            	
            	
            }
            
      });
        return button;
	}
	

}

Код tasklvl, на всякий случай:

Код: Выделить всё

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(); а вот что в скобках не могу разобраться как правильно написать чтобы мои параметры из двойного массива передались, и как их извлечь во втором активити тоже не до конца понимаю, помогите пожалуйста.

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

Добавлено: 04 сен 2014, 15:26
Foenix
имплементируй в данный объект интерфейс Serializable или Parcelable и передавай
http://stackoverflow.com/questions/2736 ... in-android

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

Добавлено: 06 сен 2014, 09:46
poparabole
вроде сделал, но работает не правильно, по всем кнопкам нажатия выдает только первое значение, в чем ошибка подскажите пожалуйста!

код адаптера

Код: Выделить всё

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;
	}
}

код активити

Код: Выделить всё

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 lvl;
		//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);
        lvl = (tasklvl)  getIntent().getSerializable("Key");


          
           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(lvl.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 (lvl.proverka(otv)) {
                    	rezalt.setText("правильно");
                    }  else {
                    	
                    	rezalt.setText("Неправильно");
                    }
                  
                    
                      break;
                      
                	}
  
                }
              };
            
              ok.setOnClickListener(oclBtnOk);
              
              
              
     
	
	
	}

	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		
	}		
}

код tasklvl

Код: Выделить всё

package com.example.mygames;

import java.io.Serializable;

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;
		}
	
	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;
		}	
	}
	
	
}