我需要创建一个登录应用程序,在该应用程序中,必须在成功进行登录身份验证时在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中获取单击的对象。

07-24 09:47
查看更多