Reputation: 20223
I have a listView with an OnItemClickListener. When I am clicking on an item, I would like to open a new wiew in a new Activity like this:
final ListView lv1 = (ListView) findViewById(R.id.ListView02);
lv1.setAdapter(new SubmissionsListAdapter(this,searchResults));
lv1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Intent myIntent = new Intent(v.getContext(), UserSubmissionLog.class);
startActivityForResult(myIntent, 0);
UserSubmissionLog userSubmissionLogs= new UserSubmissionLog(position);
System.out.println("Position "+position);
}
}
);
The problem is that I have to transfer the clicked position number to the new activity and don't know how to do this.
Thank you.
Upvotes: 4
Views: 10257
Reputation: 527
Try this,
public class yourClassName
{
private static listIndex = 0;
......
......
final ListView lv1 = (ListView) findViewById(R.id.ListView02);
lv1.setAdapter(new SubmissionsListAdapter(this,searchResults));
lv1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
listIndex = position;
Intent myIntent = new Intent(v.getContext(), UserSubmissionLog.class);
startActivityForResult(myIntent, 0);
UserSubmissionLog userSubmissionLogs= new UserSubmissionLog(position);
System.out.println("Position "+position);
}
}
);
// make new static method to access listIdex from another class
private static int getListIndex()
{
return position;
}
}
Upvotes: 1
Reputation: 8304
Intent myIntent = new Intent(v.getContext(), UserSubmissionLog.class);
myIntent.putExtra("your_key_name_for_this_extra", position);
startActivityForResult(myIntent, 0);
And for the receiving activity, get the int value via
int receivedValue = getIntent().getIntExtra("your_key_name_for_this_extra", default_value);
Upvotes: 0
Reputation: 137282
You should add it to the intent:
Intent myIntent = new Intent(v.getContext(), UserSubmissionLog.class);
myIntent.putExtra("position", position);
startActivityForResult(myIntent, 0);
and in the new Activity, call:
int prePosition = getIntent().getIntExtra("position", someDefaultIntValue);
Upvotes: 10