作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我要让 NAME 和 EMAIL 等于第一个 Activity 中来自其他 Activity 的数据。当我在 onActivityResult 中使用 NAME 和 EMAIL 作为 toast 时,它显示了结果,但除了这种方法之外它不起作用,我将 NAME 和 EMAIL 设为全局变量。
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);
}
}
关于android - 如何从 OnActivityResult 更新 RecyclerView 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37632957/
我是一名优秀的程序员,十分优秀!