У меня есть MainActivity
, у которого есть ListView
, когда я нажимаю ListView
, он открывает новое действие для этого элемента.Передача данных вперед и назад между действиями
Я хочу, чтобы иметь возможность изменять информацию в этом элементе, а затем, когда я нажимаю на нее, меняет ListView
.
Вот некоторые из кода у меня есть:
MainActivity:
String[] people;
private ListView mListView;
public static ArrayAdapter<String> adapter;
В OnCreate() {
people = new String[] {"", "", "", "", "", "", "", ""};
mListView = (ListView) findViewById(R.id.personListView);
adapter = (new ArrayAdapter<String>(this, R.layout.list_item, people);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Current item
String person = ((TextView) view).getText().toString();
// Launch new activity based on item
Intent intent = new Intent(getApplicationContext(), SinglePerson.class);
//
intent.putExtra("person", person);
//intent.putExtra("peopleList", people);
intent.putExtra("position", position);
startActivityForResult(intent, 1);
//
}
});
У меня есть это в классе, который я думал бы получить информацию от другой деятельности, но ничего не происходит:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == 1) {
// Make sure the request was successful
if(resultCode == RESULT_OK){
int listPos = data.getIntExtra("listPosition", 1);
//edit listview value at position
people[listPos] = data.getStringExtra("edittextvalue");
adapter.notifyDataSetChanged();
}
}
}
В другом классе деятельности:
public class SinglePerson extends Activity{
String[] people;
int position;
Intent intent;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.setContentView(R.layout.single_person_item_view);
EditText txtPerson = (EditText) findViewById(R.id.person_name);
intent = getIntent();
String person = intent.getStringExtra("person");
//people = intent.getStringArrayExtra("peopleList");
position = intent.getIntExtra("position", 0);
txtPerson.setText(person);
}
private TextWatcher peopleNumberListener = new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
//people[position] = s.toString();
//BillSplit.adapter.notifyDataSetChanged();
intent.putExtra("edittextvalue",s.toString());
intent.putExtra("listPosition", position);
setResult(RESULT_OK, intent);
//finish();
}
};
Можете ли вы уточнить, что вы подразумеваете под «когда я нажимаю на нее, меняет вид списка»? Вы на самом деле щелкаете по обратной клавише? Причина, которая приведет к отрицанию установки результата и 'finish()' second вашего Activity. – anddev84
Ах! Я просто нажимаю клавишу «назад» - я думаю, я сделаю кнопку, чтобы сделать это вместо этого. Есть ли что-то еще не так, как я сделал это, кроме того, что вы можете видеть? –
попробуйте использовать журнал или system.out.println, чтобы проверить, получаете ли вы данные, что хотите. –