Sam
Sam

Reputation: 291

how to pass data from listview to another activity page?

newbie question here. so im trying to pass title from 1stPage listview to 2ndPage EditText which means if i click on Title1 on 1stPage, 2ndPage editText will display Title1 also. ive learnt about putting extra in intent but i do not know how to take data from listview. tqvm in advanced.

1.MainActivity.java

public class MainActivity extends AppCompatActivity{

ListView l1;
String[] t1={"TITLE 1","TITLE 2"};
String[] d1={"Detail 1","Detail 2"};
String[] s1={"Content 1", "Content 2"};

TextView textView;

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

    textView = (TextView) findViewById(R.id.title);

    l1=(ListView)findViewById(R.id.list);
    l1.setAdapter(new dataListAdapter(t1, d1, s1));


}

class dataListAdapter extends BaseAdapter {
    String[] Title, Detail, Content;

    dataListAdapter() {
        Title = null;
        Detail = null;
        Content=null;
    }

    public dataListAdapter(String[] text, String[] text1, String[] text3) {
        Title = text;
        Detail = text1;
        Content = text3;

    }

    public int getCount() {
        // TODO Auto-generated method stub
        return Title.length;
    }

    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = getLayoutInflater();
        View row;
        row = inflater.inflate(R.layout.custom, parent, false);
        final TextView title, detail, detail2;
        title = (TextView) row.findViewById(R.id.title);
        detail = (TextView) row.findViewById(R.id.detail);
        detail2 = (TextView) row.findViewById(R.id.detail2);
        title.setText(Title[position]);
        detail.setText(Detail[position]);
        detail2.setText(Content[position]);

        l1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                String selected = title.getText().toString();
                Intent i = new Intent(getApplicationContext(), Main2Activity.class);
                i.putExtra("name", selected);
                startActivity(i);
            }
        });

        return (row);
    }

}


}

2.Main2Activity.java

public class Main2Activity extends AppCompatActivity {

EditText editText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    editText = (EditText)findViewById(R.id.et);

    Intent in = getIntent();
    String name = in.getStringExtra(("name"));
    editText.setText(name);
}

}

Upvotes: 0

Views: 1220

Answers (2)

ELITE
ELITE

Reputation: 5940

You should declare this method in MainActivity after the lines

    l1=(ListView)findViewById(R.id.list);
    l1.setAdapter(new dataListAdapter(t1, d1, s1));

    l1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            String selected = t1[position];
            Intent i = new Intent(getApplicationContext(), Main2Activity.class);
            i.putExtra("name", selected);
            startActivity(i);
        }
    });

and remove from dataListAdapter class

in another activity, get the title using following method

Bundle extras = getIntent().getExtras();
String name = extras.getString("name");
editText.setText(name);

Hope it'll work.

Upvotes: 1

Ahsan Kamal
Ahsan Kamal

Reputation: 1105

In first activity you should put extra argument to intent like this. It's also good to store "argument" String in MainActivity as constant and always refer to it in other places.

public static final String ARG_FROM_MAIN = "argument";

// I assume B.class is your second ativity

Intent intent = new Intent(MainActivity.this, B.class); 
intent.putExtra("argument", "Title1");
startActivity(intent);

Then in B activity you retrieve argument like this:

String passedArg = getIntent().getExtras().getString("argument");
enteredValue.setText(passedArg);

Upvotes: 0

Related Questions