何从OnActivityResult更新RecyclerView

何从OnActivityResult更新RecyclerView

本文介绍了如何从OnActivityResult更新RecyclerView元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我将NAME和EMAIL设置为与第一个活动中其他活动的数据相同.我在onActivityResult中使用NAME和EMAIL进行烤面包,它显示了结果,但是在此方法之外,我无法将NAME和EMAIL设置为全局变量.

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);

        }
   }
}

推荐答案

执行此操作

   //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();
   }

然后像这样修改OnActivityResult方法

   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);

    }
 }

这篇关于如何从OnActivityResult更新RecyclerView元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-06 19:05