Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.4k views
in Technique[技术] by (71.8m points)

android - how to update RecyclerView element from OnActivityResult

I m make NAME and EMAIL equal to the data from other activity in first activity. Whem i m using NAME and EMAIL for toast in onActivityResult it showing the result but beyond this method its not working beside i make NAME and EMAIL a global variable.

public class startActivity extends ActionBarActivity {


       String sell="sell";
    Toolbar mToolbar;
    //////drawable navbar
    LinearLayout mystore;
    int  REQUEST_CODE=10110;
    private static ViewPager mPager;
    private static int currentPage = 0;
    private static int NUM_PAGES = 0;
    LinearLayout buysell;



     int PROFILE = R.drawable.sellit;

    private Toolbar toolbar;  
                            // Declaring the    Toolbar Object

      RecyclerView mRecyclerView;                           // Declaring 
      RecyclerView.Adapter mAdapter;                        // Declaring Adapter 
      RecyclerView.LayoutManager mLayoutManager;            // Declaring Layout 
      DrawerLayout Drawer;                                  // Declaring 

    ActionBarDrawerToggle mDrawerToggle;
    /////
      String name,mail;
    String NAME;
    String EMAIL;
       protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);


      mystore=(LinearLayout)findViewById(R.id.mystore);
        mystore.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(startActivity.this,MybookStore.class));
            }
        });
        //toolbar
      init();

        buysell=(LinearLayout)findViewById(R.id.buysell);
        buysell.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(startActivity.this,buySecond.class));
            }
        });

        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        getSupportActionBar().setTitle("MybookStore");




        mRecyclerView = (RecyclerView) findViewById(R.id.RecyclerView); 

        mRecyclerView.setHasFixedSize(true); 

        mAdapter = new MyAdapter(TITLES,ICONS,NAME,EMAIL,PROFILE);   

        // And passing the titles,icons,header view name, header view email,
        // and header view profile picture

        mRecyclerView.setAdapter(mAdapter);    
                           // Setting the adapter to RecyclerView
        //RecyclerItemClickListener//
                mLayoutManager = new LinearLayoutManager(this);   
                // Creating a layout Manager

        mRecyclerView.setLayoutManager(mLayoutManager);  
               // Setting the layout Manager

        mRecyclerView.addOnItemTouchListener(
                new RecyclerItemClickListener(startActivity.this, new 
     RecyclerItemClickListener.OnItemClickListener() {
                    @Override public void onItemClick(View view, int position) {
                        switch(position){
                            case 1:
                                startActivity(new    
      Intent(startActivity.this,publishNewBook.class));
                        }
                    }
                })
        );


        Drawer = (DrawerLayout) findViewById(R.id.DrawerLayout);  
      // Drawer object Assigned to the view
        mDrawerToggle = new
         ActionBar
       DrawerToggle(this,Drawer,toolbar,R.string.drawer_open,R.string.drawer_c
      lose){

            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                // code here will execute once the drawer is opened( As I dont 
        want anything happened whe drawer is
                // open I am not going to put anything here)
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                // Code here will execute once drawer is closed
            }



        }; // Drawer Toggle Object Made
        Drawer.setDrawerListener(mDrawerToggle); // Drawer Listener set to the
      Drawer toggle
                     // Finally we set the drawer toggle sync State
        mDrawerToggle.syncState();


    }




    public void login(View view){
    AlertDialog.Builder builder=new AlertDialog.Builder(this);
    builder.setMessage("Please Login To Publish Book ");
    builder.setCancelable(false);
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            Intent i=new Intent(startActivity.this, userLogin.class);
            startActivityForResult(i,REQUEST_CODE);
          //  startActivity(new Intent(startActivity.this, userLogin.class));
        }
    });
    builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });
     AlertDialog alertDialog=builder.create();
    alertDialog.show();

     //startActivity(new Intent(startActivity.this,userLogin.class));

    }

    protected void onActivityResult(int requestCode, int resultCode, Intent 
    data) {
        super.onActivityResult(requestCode, resultCode, data);

     if(requestCode==REQUEST_CODE){
        if (resultCode ==110) {
            NAME=new String(data.getStringExtra("name1"));
            EMAIL=new String(data.getStringExtra("mail2"));
            Toast.makeText(getApplicationContext(), "Name " + NAME+" and mailId
      "+EMAIL+" get", Toast.LENGTH_LONG).show();

            //  mAdapter = new MyAdapter(TITLES,ICONS,NAME1,EMAIL1,PROFILE);

        }
   }
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

do this

   //make a function updateAdapter() inside your adapter
   public void updateAdapter(/* gets params like TITLES,ICONS,NAME,EMAIL,PROFILE*/){

            // update adapter element like NAME, EMAIL e.t.c. here

            // then in order to refresh the views notify the RecyclerView
            notifyDataSetChanged();
   }

then modify the OnActivityResult method like so

   protected void onActivityResult(int requestCode, int resultCode, Intent 
   data) {
           super.onActivityResult(requestCode, resultCode, data); 

           if(requestCode==REQUEST_CODE){ 
              if (resultCode == RESULT_OK) { 
                NAME=new String(data.getStringExtra("name1")); 
                EMAIL=new String(data.getStringExtra("mail2")); 
                Toast.makeText(getApplicationContext(), "Name " + NAME+" and mailId 
                "+EMAIL+" get", Toast.LENGTH_LONG).show(); 

                //do this
                mAdapter.updateAdapter(TITLES,ICONS,NAME,EMAIL,PROFILE);

    } 
 } 

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...