-1

I have one main activity inside which have two tabs called task and call. In task there is one button which when pressed, goes to new activity and from there the data goes to the task fragment in viewpager of main activity to populate listview in task fragment. I have passed the data but it's not being adding dynamically and items are being overwritten.

Notifydata setchange is also not working and I don't know what my mistake is. Can you guys please help let me. I'm posting my code:

The main activity contains two fragment in viewpager:

import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

    /**
     * The {@link android.support.v4.view.PagerAdapter} that will provide
     * fragments for each of the sections. We use a
     * {@link FragmentPagerAdapter} derivative, which will keep every
     * loaded fragment in memory. If this becomes too memory intensive, it
     * may be best to switch to a
     * {@link android.support.v4.app.FragmentStatePagerAdapter}.
     */
    private SectionsPagerAdapter mSectionsPagerAdapter;

    /**
     * The {@link ViewPager} that will host the section contents.
     */
    private ViewPager mViewPager;

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

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        // Create the adapter that will return a fragment for each of the three
        // primary sections of the activity.
        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);
        //  Bundle bundle=getIntent().getExtras();
        // Intent intent=getIntent();
        //   ActivityView activityView=(ActivityView)intent.getSerializableExtra("yog");
        //     intent.putExtra("yogs",activityView);
        // Bundle bundle=new Bundle();
        // bundle.putSerializable("yogs",activityView);
        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);

    //    intent.getSerializableExtra("god");
       /* Bundle bundle=new Bundle();
        if(bundle!=null) {
            bundle.putSerializable("yog", activityView);
            Task task = new Task();
            task.setArguments(bundle);
        }*/}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */


    /**
     * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
     * one of the sections/tabs/pages.
     */
    public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            // getItem is called to instantiate the fragment for the given page.
            // Return a PlaceholderFragment (defined as a static inner class below).
                switch (position){
                    case 0:
                            Task task=new Task();
                            return task;

                    case 1:
                            Calls calls=new Calls();
                            return calls;

                }
        return null;
        }

        @Override
        public int getCount() {
            // Show 3 total pages.
            return 2;
        }

        @Override
        public CharSequence getPageTitle(int position) {
           switch (position){
               case 0:
                   return "Task";
               case 1:
                   return "Call";

            }
        return null;
            }

        }
    }

This is task fragment of view pager where listview gets populated from detail activity:

   import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;
public class Task extends Fragment
{
     List<ActivityView>activityViews;
    ActivityView activity;
    ActivityView activityView=new ActivityView();
    ActivityListAdapter activityListAdapter;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View rootview= inflater.inflate(R.layout.yog,container,false);
        ListView listview=(ListView)rootview.findViewById(R.id.listView);
        if (activityViews == null)
        {
            activityViews = new ArrayList<ActivityView>();

        }

          //  Intent intent=getActivity().getIntent();
           // ActivityView activityView=(ActivityView) intent.getSerializableExtra("yog");
            activityListAdapter = new ActivityListAdapter(getActivity(), R.id.listView, activityViews);
            listview.setAdapter(activityListAdapter);
        if(activityView!=null)
        {
            activityViews.add(activityView);
            activityListAdapter.notifyDataSetChanged();

        }
            Button btn=(Button)rootview.findViewById(R.id.button2);
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(getActivity(), DetailActivity.class);
                    startActivity(intent);
                }
            });



        return rootview;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
       if(requestCode==1){
           Intent intent=getActivity().getIntent();
         activity  =(ActivityView) intent.getSerializableExtra("yog");

       }
    }
}

This is detailactivity where data goes to populate listview in task fragment:

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

public class DetailActivity extends AppCompatActivity {
    ActivityView activityView = new ActivityView();
    // public static String endpoint;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        final EditText editText = (EditText) findViewById(R.id.editText);
        final Spinner spinner = (Spinner) findViewById(R.id.spinner);
        final ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.yog, R.layout.support_simple_spinner_dropdown_item);
        spinner.setAdapter(arrayAdapter);
        final Button btn = (Button) findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                activityView.setDescription(editText.getText().toString());
                activityView.setStatus(spinner.getSelectedItem().toString());
                Intent intent=new Intent(DetailActivity.this,MainActivity.class);
                intent.putExtra("yog",activityView);
                intent.putExtra("god",activityView);
                startActivityForResult(intent,1);


            }
        });
    }
}

This is my customlist adapter:

import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import java.util.List;

/**
 * Created by 4264 on 08-01-2016.
 */
public class ActivityListAdapter  extends ArrayAdapter<ActivityView> {

    private List<ActivityView> listData;
    private LayoutInflater layoutInflater;

    public ActivityListAdapter(Context context, int resource, List<ActivityView> listdata) {
        super(context, resource, listdata);
        this.listData = listdata;
        layoutInflater = LayoutInflater.from(context);
    }

    @Override
    public void add(ActivityView object)
    {
        super.add(object);

    }


    @Override
    public int getCount()
    {

        return listData.size();
    }

    @Override
    public ActivityView getItem(int position)
    {

        return listData.get(position);
    }


    @Override
    public long getItemId(int position)
    {
        return position;
    }

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

        View mview = convertView;
        if (mview == null) {
            convertView = layoutInflater.inflate(R.layout.list_activity, null);
            comp_list_holder  = new ViewHolder();
            comp_list_holder .competitors_name = (TextView) convertView.findViewById(R.id.companygrp);
            comp_list_holder .competitors_website = (TextView) convertView.findViewById(R.id.companyname);
            convertView.setTag(comp_list_holder );

        }
         else
         {
            comp_list_holder  = (ViewHolder) convertView.getTag();
         }

    comp_list_holder.competitors_name.setText("Description " + listData.get(position).getDescription());
    comp_list_holder.competitors_website.setText("Status "+ listData.get(position).getStatus());
    convertView.setBackgroundColor(Color.parseColor("#DCDCDCDC"));
    return convertView;



    }



    public static class ViewHolder

    {
        public TextView competitors_name;
        public TextView competitors_website;


    }


}
Vettu Killi
  • 43
  • 1
  • 10

1 Answers1

0

In Task fragment:

Intent intent = new Intent(getActivity(), DetailActivity.class);
                startActivityForResult(intent, 1);

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == 1) {
            // Make sure the request was successful
            if (resultCode == Activity.RESULT_OK){
                activityViews.add((ActivityView)data.getParcelableExtra("yog"));
                activityListAdapter.notifyDataSetChanged();

            }
        }

In DetailActivity in the btn.setOnclickListener :

Intent intent=new Intent();
intent.putExtra("yog",activityView);
intent.putExtra("god",activityView);
setResult(RESULT_OK,intent);
finish();//finishing activity
Chol
  • 2,097
  • 2
  • 16
  • 26
  • Ok nice, hope you have understood the principe of startActivityForResult, can be very usefull! – Chol Jan 19 '16 at 10:54
  • am facing one issue in this when i rotate the screen list gets disappeared . – Vettu Killi Jan 19 '16 at 11:25
  • Take a look to save instanceState : http://stackoverflow.com/questions/12503836/how-to-save-custom-arraylist-on-android-screen-rotate – Chol Jan 19 '16 at 11:32