本文介绍了如何从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元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!