我需要创建一个登录应用程序,在该应用程序中,必须在成功进行登录身份验证时在listview中仅显示用户名,并在其他活动中在textview中显示用户名(如姓名,电子邮件和地址),如onnameClick。所有用户详细信息都应从Xml文件中解析。
基本上,我有三个活动
1. Login.java
2. Users.java
3. UserDetails.java
但是,我已经将用户名从(Users.java)列表视图发送到userdetails(在Textview上)。
现在,我需要向(UserDetails)活动发送电子邮件,地址。
事实是,电子邮件和地址不在(Users.java)列表视图中,我只显示用户名。
任何帮助将不胜感激。谢谢 !
这是我的Users.java
public class Users extends Activity {
ListView myList ;
List<String> fillUsers;
List<String> fillemail;
List<String> fillphone;
List<String> fillplace;
List<String> titles;
List<String> link1;
//private List<Map<String, Object>> data;
private ListView listView = null;
private List<com.example.firstapp.Message> messages;
static final String KEY_FNAME = "fname";
static final String KEY_LNAME = "lname";
static final String KEY_EMAIL = "email";
static final String KEY_PHONE = "phone";
static final String KEY_PLACE = "place";
List headlines;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_users);
new MyAsyncTask().execute();
}
private class MyAsyncTask extends AsyncTask<Void, Void, Void>
{
ProgressDialog mProgressDialog;
@Override
protected void onPostExecute(Void result) {
mProgressDialog.dismiss();
final ListView listView = (ListView) findViewById(R.id.listview);
final ArrayAdapter<String> listAdapter= new ArrayAdapter<String>(Users.this, android.R.layout.simple_list_item_1, fillUsers);
listView.setAdapter(listAdapter);
try{
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedFromList =(String) (listView.getItemAtPosition(position));
System.out.println("Testing 006: "+fillemail+fillphone+fillplace);
System.out.println("Testing 008: "+selectedFromList);
Intent in = new Intent(Users.this,UserDetails.class);
System.out.println("Testing 009: ");
Bundle myBundle = new Bundle(); //create a Bundle
myBundle.putString("username",selectedFromList);
myBundle.putInt("userid",1234);
System.out.println("Testing 010: ");
in.putExtras(myBundle); //PUT THE Bundle you created in the Intent
startActivityForResult(in, 0);
System.out.println("Testing 010: ");
}
});
}catch(Exception ex){
System.out.println("On item click : 0070"+ex.toString());
System.out.println("On item click : 0080"+ex.getStackTrace().toString());
}
}
@Override
protected void onPreExecute() {
mProgressDialog = ProgressDialog.show(Users.this, "", "Loading. Please wait...", true);
}
@Override
protected Void doInBackground(Void... params) {
// your network operation
loadFeed();
return (null);
}
public void loadFeed(){
try{
BaseFeedParser parser = new BaseFeedParser();
messages = parser.parse();
Log.e("check=","yes");
List<String> titles = new ArrayList<String>(messages.size());
HashMap<String, String> map = new HashMap<String, String>();
int count=0;
for (com.example.firstapp.Message msg : messages){
count++;
}
fillUsers = new ArrayList<String>(count);
fillemail = new ArrayList<String>(count);
fillphone = new ArrayList<String>(count);
fillplace = new ArrayList<String>(count);
for (com.example.firstapp.Message msg : messages){
fillUsers.add(msg.getFname()+" "+msg.getLname());
fillemail.add(msg.getEmail());
fillphone.add(msg.getPhone());
fillplace.add(msg.getPlace());
System.out.println("OOOOOOOOOOOO "+fillemail.toString());
}
return;
} catch (Throwable t){
Log.e("AndroidNews",t.getMessage(),t);
t.printStackTrace();
}
}
}
}
最佳答案
您可以使用Intent解析XML并将解析的信息传递给下一个Activity。
例如,
Intent mIntent = new Intent(currentActivity.this, SecondActivity.class);
mIntent.putExtra("UserName","Color");
startActivity(mIntent);
根据您所提供的信息,我认为这些信息绰绰有余。
更新:
根据代码,我建议您注意以下几点:
为什么要创建不同的列表,在这里我想说在插入/删除数据时将很难管理,可以说我想删除一条记录,现在根据您必须从每个列表中删除的代码,对吗?是的。因此,您无需创建其他列表,而可以在列表内创建添加对象,例如
ArrayList<Student>
现在,关键点在于传递动态数据(您的单词),如果您遵循第一个要点,则可以将整个对象直接传递给第二个活动或您想要的其他任何地方。仅供参考,您可以通过单击位置从ArrayList中获取单击的对象。