android获取项目的位置在另一个类中单击

时间:2014-04-15 01:35:17

标签: android

有人可以帮帮我吗?我正试图访问"位置"变量itemclicked。我希望其他类的内容根据我单击的列表显示不同的内容。

我想要的是:如果我点击位置0,那么我会转到另一个页面,我在该类上创建的TextView更改为"您点击了位置0"。如果我点击位置1,它将变为"您点击了位置1"等等。

我试图这样做,但只有当我点击位置0时它才有效。如果我点击第1项,它会显示"你点击了位置0"。我很迷茫。我尝试过使用putexraa和其他方法,但它们无法正常工作。非常感谢您的帮助。

package com.obi.arinzeapp;

import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
    private List<list> mymusic = new ArrayList<list>();
    public list currentsong;
    public int man;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        populatemusiclist();
        populateListView();
        registerclick();

    }

    private void registerclick() {
        ListView mus = (ListView) findViewById(R.id.musiclistview);
        mus.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long arg3) {

                man = position;

                try {
                    Class ourClass = Class.forName("com.obi.arinzeapp.Music");
                    Intent ourIntent = new Intent(MainActivity.this, ourClass);
                    startActivity(ourIntent);
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }

            }

        });
    }

    private void populatemusiclist() {
        mymusic.add(new list(R.drawable.ff, " Mr.J.Mederiors \"Constance\"",
                R.drawable.medi));
        mymusic.add(new list(R.drawable.ff, " Mr.J.Mederiors \"Constnce\"",
                R.drawable.medi));
        mymusic.add(new list(R.drawable.ff, " Mr.J.Mederiors \"Constnce\"",
                R.drawable.medi));
    }

    private void populateListView() {
        ArrayAdapter<list> adapter = new MyListAdapter();
        ListView list = (ListView) findViewById(R.id.musiclistview);
        list.setAdapter(adapter);
    }

    private class MyListAdapter extends ArrayAdapter<list> {

        public MyListAdapter() {
            super(MainActivity.this, R.layout.viewitem, mymusic);
            // TODO Auto-generated constructor stub
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View veiwitem = convertView;
            if (veiwitem == null) {
                veiwitem = getLayoutInflater().inflate(R.layout.viewitem,
                        parent, false);
                // return super.getView(position, convertView, parent);
            }

            list currentsong = mymusic.get(position);

            ImageView imageview = (ImageView) veiwitem
                    .findViewById(R.id.imageView2);
            imageview.setImageResource(currentsong.getNum());

            TextView wor = (TextView) veiwitem.findViewById(R.id.word);
            wor.setText(currentsong.getNameofsong());

            ImageView imageview2 = (ImageView) veiwitem
                    .findViewById(R.id.imageView1);
            imageview2.setImageResource(currentsong.getPicture());

            return veiwitem;
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}



import android.app.Activity;
import android.os.Bundle;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class Music extends Activity{

    TextView name,song,album,about;
    String nam,son,albu,abou;
    RelativeLayout picc;
    public int ye ;

    MainActivity maa = new MainActivity();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stu
        super.onCreate(savedInstanceState);
        setContentView(R.layout.music);
        name= (TextView) findViewById(R.id.name);
        song= (TextView) findViewById(R.id.song);
        album=(TextView) findViewById(R.id.album);
        about=(TextView) findViewById(R.id.about);
        picc=(RelativeLayout) findViewById(R.id.picc);

        maa.man= ye;  
        if(ye==0){
             name.setText("You clicked position 1") ;
         }else{
             name.setText("You clicked position 2") ;
             }
         }



}

1 个答案:

答案 0 :(得分:3)

在putAxtra中传递man的值,同时在mainActivity中设置该类的意图

   Class ourClass = Class.forName("com.obi.arinzeapp.Music");
   Intent ourIntent = new Intent(MainActivity.this, ourClass);
   ourIntent.putExtra("man",man);
   startActivity(ourIntent);

在音乐活动

中获得额外收益
   extras = getIntent().getExtras();
   newInt= extras.getInt("man");

这是将值从一个活动传递到另一个活动的标准方法。 但是你这样做可以尝试将man设为static variable,但不建议这样做。