У меня есть следующий код:
chart.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
final String aux= (String) lt.getItemAtPosition(position);
Intent myIntent = new Intent(infoList.this, tabList.class);
startActivity(myIntent);
}
});
У меня также есть ListView
. Когда я нажимаю на элемент из этого ListView
, я перехожу к другому действию, которое показывает мне информацию для этого действия. Как мне это сделать? Я хочу, чтобы эта информация соответствовала элементу, который я нажал.
Вот что я сделал в этой ситуации, если вы не хотите просто передавать идентификатор назад:
Я вызываю другое действие следующим образом:
Intent intent = new Intent(myapp, CreateExerciseActivity.class);
intent.putExtra("selected_id", workout.getId());
startActivityForResult(intent, CREATE_ACTIVITY);
Затем я делаю
Intent returnIntent = new Intent();
returnIntent.putExtra("name", m.getName());
returnIntent.putExtra("unit", m.getUnit());
returnIntent.putExtra("quantity", m.getQuantity());
if (getParent() == null) {
setResult(Activity.RESULT_OK, returnIntent);
} else {
getParent().setResult(Activity.RESULT_OK, returnIntent);
}
finish();
Итак, в этом случае я передавал идентификатор, чтобы получить более подробную информацию от пользователя, а затем я передаю их обратно в вызывающую активность, чтобы добавить его, поскольку я не хотел сохранять это пока пользователь не захочет позже.
Итак, вам нужно сделать startActivityForResult
, чтобы он смог вернуть данные.
Вы можете добавить некоторые данные в Intent с помощью методов putExtra(), а затем получить данные в новом Activity с помощью getExtras(). getSomething().
Я думаю, вы должны использовать OnItemClickListener вместо события click, и вам нужно называть следующую операцию.
private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id)
{
Intent intent = new Intent(this, MyInfoActivity.class);
intent.putExtra("selected_id", getIdFor(position));
startActivity(intent);
}
};
mHistoryView = (ListView)findViewById(R.id.history);
mHistoryView.setOnItemClickListener(mMessageClickedHandler);
Это действительно зависит от того, что данные находятся в вашем списке. Например, если вы показываете список контактов в списке, вы можете просто передать идентификатор контакта другому действию и позволить этой активности обращаться к поставщику контента для контактов для получения данных, которые вы хотите, чтобы они работали с. Вы должны передать идентификатор в URI в поле данных намерения, в отличие от пакета дополнительных заданий.