2013-09-18 2 views
0

С самого начала деятельностиВозвращение данных из ListView в деятельности

Intent intent = new Intent(StartActivity.this, MarkersActivity.class); 
startActivityForResult(intent, GoMarkerReturn); 

вызова другой деятельности, в которой есть CustomListAdapter расширяет BaseAdapter. В listviewhas картину, при нажатии, чтобы закрыть текущую деятельность и возвращает результат к исходной активности

public class CustomListAdapter extends BaseAdapter { 
... 
    public View getView(int position, View convertView, ViewGroup parent) { 
     holder.imggo.setOnClickListener(new View.OnClickListener() { 
      ... 
      @Override 
      public void onClick(View v) { 
      int clickedPosition = (Integer)v.getTag(); 
      NewsItem newsItem = (NewsItem)listData.get(clickedPosition);     
      Long goID = newsItem.getID(); 

      Intent myIntent = new Intent(v.getContext(), StartActivity.class); 
      myIntent.putExtra("goID", goID); 
      setResult(0, myIntent); 

setResult (0, myIntent) не работают!

ответ

0
public class CustomListAdapter extends BaseAdapter { 
... 
    public View getView(int position, View convertView, ViewGroup parent) { 
    ... 
     holder.imggo.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent myIntent = new Intent(v.getContext(), StartActivity.class); 
       myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       myIntent.putExtra("goID", goID); 
       v.getContext().startActivity(myIntent); 

и

public class StartActivity extends Activity{ 
... 
    @Override 
    protected void onResume() { 
     Intent intent = getIntent(); 
     Long goID = intent.getLongExtra("goID", 0); 
     if (goID > 0){ 
       ... 
1

StartActivityForResult и setResult используется для передачи значений между действиями. Здесь в вашем случае вам нужно вызвать finish() во втором действии, чтобы второе действие было уничтожено и первое действие вышло на передний план.

Это хороший учебник, чтобы узнать, как он функционирует. DataTransfers

+0

отделка() - Послевкусие метод() не определено для типа нового View.OnClickListener() {} – SmallSani

+0

Готово() является методом деятельность. Вам нужно иметь ссылку Activity в коде Adapter. Кроме того, setResult() должен использовать тот же RESULT_CODE, что и в startAcvitiyforResult. Сначала Pls прочитал учебник и получил хорошее понимание. – prijupaul

+0

Эти методы работают в extends Activity, но не работают в extends BaseAdapter -> getView -> onClick – SmallSani

Смежные вопросы