1

ログイン認証が成功したときにリストビューにユーザー名のみを表示し、ユーザー名リストビューの onItemClick を表示する必要があるログインアプリを作成する必要があります。名前、電子メール、アドレスなどのユーザーの詳細を別のアクティビティのテキストビューに表示する必要があります。すべてのユーザーの詳細は、Xml ファイルから解析する必要があります。

基本的に、1. Login.java 2. Users.java 3. UserDetails.java の 3 つのアクティビティがあります。

ただし、(Users.java)リストビューから(Textviewの)userdetailsにユーザー名を送信しました。今、私は電子メール、アドレスを(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();
        }

    }

}   

}

4

3 に答える 3

1

Intentを使用して、XML を解析し、解析された情報を次のアクティビティに渡すことができます。

例えば、

Intent mIntent = new Intent(currentActivity.this, SecondActivity.class);
mIntent.putExtra("UserName","Color");
startActivity(mIntent);

質問で提供された情報によると、この情報は十分すぎると思います。

アップデート:

コードに基づいて、以下の点をお勧めします。

  1. 別のリストを作成する理由、ここでは、データの挿入/削除中に管理するのが難しいと思います.1 つのレコードを削除したいとしましょう。コードに従って、すべてのリストから削除する必要がありますよね? はい、そうです。したがって、別のリストを作成する代わりに、次のようなリスト内に追加オブジェクトを作成できますArrayList<Student>

  2. さて、ポイントは動的データ(あなたの言葉)を渡すことです。最初のポイントに従うと、オブジェクト全体を2番目のアクティビティまたは他の必要な場所に直接渡すことができます。参考までに、クリックされた位置によって ArrayList からクリックされたオブジェクトを取得できます。

于 2012-11-23T06:19:03.517 に答える
0

以下のコードを onItemClickListener に入れます。

Intent i = new Intent(YourActivity.this,NextActivity.class);
i.putExtra("name", "Name");
i.putExtra("email", "Email");
i.putExtra("address", "Address");
startActivity(i);
于 2012-11-23T06:23:02.337 に答える
0

それには2つの方法があります。

1) 静的変数を使用して pojo クラスを作成し、次のアクティビティで使用します。

public class MyClass{
 public static  String varaible1;
 public static  String varaible2;
 public static  int varaible3;
 public static  List myList;
}

2) 独自のアプリケーション クラスを作成する

public class MyApplication extends Application {

 private  String varaible1;
 private String varaible2;
 private int varaible3;
 private List myList;
 publid getter, setter methods
}

あなたの活動の中で

MyApplication  myApplication =(MyApplication)getApplication();

myApplication.getVaraible1();

AndroidManifest.xml で

<application android:icon="@drawable/icon" android:label="@string/app_name"  
         android:name="MyApplication">
于 2012-11-23T07:12:05.297 に答える