user3534054
user3534054

Reputation:

android get positon of itemclicked in another class

Can someone please help me? I am trying to access a "position" variable itemclicked. I want the content of the other class to display a different thing depending on the list I clicked.

What I want is this: if I click position 0, then it takes me to another page and the TextView I created on that class changes to "you clicked position 0". If I click position 1, it changes to "you clicked position 1", etc.

I've attempted to do this, but it only works when I click position 0. If I click item 1, it shows "you have clicked position 0". I am very confused. I have tried using putexraa and other methods, but they are not working. Your help would be greatly appreciated.

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



}

Upvotes: 0

Views: 192

Answers (1)

Jagdeep Singh
Jagdeep Singh

Reputation: 1210

Pass the value of man in putExtra while setting the intent for that class in mainActivity

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

And get this extra in Music Activity

   extras = getIntent().getExtras();
   newInt= extras.getInt("man");

This is the standard way to pass the values from one activity to another. But the way you doing you can try making man as static variablebut it is not recommended.

Upvotes: 3

Related Questions