2017-06-08 11 views
0

現在、HTTPリクエストを処理する2つのアクティビティがあります。BaseAdapterを使用して前のアクティビティに戻るボタン

最初のアクティビティには、CustomListクラスが含まれており、BaseAdapterが拡張されています。

2番目のボタンには、前のボタンがあり、最初のアクティビティに戻ることができます。

最初のアクティビティに戻って、私はそれを去った状態を回復することができます。つまり、HTTPリクエストから来た情報を見つけることができるということです。私は最初のアクティビティにあるデータ "infos_user"を見つけて、すべてのBaseAdapterのデータを探したいと思います。次のように

私のアーキテクチャは次のとおりです。活動0(HTTPリクエスト) - >(BaseAdapterとHTTPリクエストで)活動1 - 私は本当にないので、私はすべてのコードを入れ

>活動2(HTTPリクエスト)/

まずアクティビティ:

public class GetChildrenList extends AppCompatActivity implements View.OnClickListener { 
private ArrayList<Child> childrenImeList = new ArrayList<Child>(); 

private Button btn_previous; 
private ListView itemsListView; 
private TextView tv_signin_success; 

int id = 0; 
String infos_user; 
String email; 
String password; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.get_children_list); 

    infos_user = (String) getIntent().getSerializableExtra("infos_user"); 

    Intent intent = new Intent(GetChildrenList.this , GetLearningGoalsList.class); 
    intent.putExtra("username", infos_user); 

    btn_previous = (Button) findViewById(R.id.btn_previous); 

    btn_previous.setOnClickListener(this); 

    tv_signin_success = (TextView) findViewById(R.id.tv_signin_success); 


    tv_signin_success.setText("Bonjour " + infos_user + "!"); 

    itemsListView = (ListView)findViewById(R.id.list_view_children); 


    new GetChildrenAsync().execute(); 
} 

class GetChildrenAsync extends AsyncTask<String, Void, ArrayList<Child>> { 

    private Dialog loadingDialog; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     loadingDialog = ProgressDialog.show(GetChildrenList.this, "Please wait", "Loading..."); 
    } 

    @Override 
    protected ArrayList<Child> doInBackground(String... params) { 


     int age = 0; 
     email = (String) getIntent().getSerializableExtra("email"); 
     password = (String) getIntent().getSerializableExtra("password"); 
     String first_name = null; 
     String last_name = null; 

     try { 

      SendRequest sr = new SendRequest(); 
      String result = sr.sendHttpRequest("http://" + sr.getIP_ADDRESS() + "/childrenime/list", "GET", true, email, password); 

      String jsonResult = "{ \"children\":" + result + "}"; 

      Log.d("result1", jsonResult); 

      //Manage JSON result 
      JSONObject jsonObject = new JSONObject(jsonResult); 
      JSONArray childrenArray = jsonObject.getJSONArray("children"); 

      for (int i = 0; i < childrenArray.length(); ++i) { 
       JSONObject child = childrenArray.getJSONObject(i); 
       id = child.getInt("id"); 
       first_name = child.getString("first_name"); 
       last_name = child.getString("last_name"); 
       age = child.getInt("age"); 

       String name = first_name + " " + last_name; 

       childrenImeList.add(new Child(id,name,age)); 
      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return childrenImeList; 

    } 

    @Override 
    protected void onPostExecute(final ArrayList<Child> childrenListInformation) { 
     loadingDialog.dismiss(); 
     if(childrenListInformation.size() > 0) { 
      CustomListChildrenAdapter adapter = new CustomListChildrenAdapter(GetChildrenList.this, childrenListInformation); 
      itemsListView.setAdapter(adapter); 
     } 
     else{ 
      Toast.makeText(getApplicationContext(), "Impossible de récupérer la liste des enfants", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 
} 

BaseAdapter:

public class CustomListChildrenAdapter extends BaseAdapter implements View.OnClickListener { 
private Context context; 
private ArrayList<Child> children; 
private Button btnChoose; 
private TextView childrenName; 
private TextView childrenAge; 

public CustomListChildrenAdapter(Context context, ArrayList<Child> children) { 
    this.context = context; 
    this.children = children; 
} 

@Override 
public int getCount() { 
    return children.size(); //returns total item in the list 
} 

@Override 
public Object getItem(int position) { 
    return children.get(position); //returns the item at the specified position 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    View view; 

    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.layout_list_view_children,null); 
     childrenName = (TextView)view.findViewById(R.id.tv_childrenName); 
     childrenAge = (TextView) view.findViewById(R.id.tv_childrenAge); 
     btnChoose = (Button) view.findViewById(R.id.btn_choose); 
     btnChoose.setOnClickListener(this); 

    } else { 
     view = convertView; 
    } 

    btnChoose.setTag(position); 

    Child currentItem = (Child) getItem(position); 
    childrenName.setText(currentItem.getChildName()); 
    childrenAge.setText(currentItem.getChildAge() + ""); 

    return view; 
} 

@Override 
public void onClick(View v) { 
    Integer position = (Integer) v.getTag(); 
    Child item = (Child) getItem(position); 
    String email = (String) ((Activity) context).getIntent().getSerializableExtra("email"); 
    String password = (String) ((Activity) context).getIntent().getSerializableExtra("password"); 

    Intent intent = new Intent(context, GetLearningGoalsList.class); 
    intent.putExtra("idChild",item.getId()); 
    intent.putExtra("email",email); 
    intent.putExtra("password",password); 

    context.startActivity(intent); 

} 
} 
私はこれを行うことができます方法を知っています0

第2アクティビティ:

public class GetLearningGoalsList extends AppCompatActivity implements View.OnClickListener { 
private ArrayList<LearningGoal> childrenLearningList = new ArrayList<LearningGoal>(); 

private Button btn_previous; 
private ListView itemsListView; 

String email; 
String password; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.get_learning_goals_list); 

    btn_previous = (Button) findViewById(R.id.btn_previous); 

    btn_previous.setOnClickListener(this); 

    itemsListView = (ListView)findViewById(R.id.list_view_learning_goals); 


    new GetLearningGoalsAsync().execute(); 
} 

@Override 
public void onClick(View v) { 
    Intent myIntent = new Intent(GetLearningGoalsList.this, GetChildrenList.class); 
    myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(myIntent); 
    return; 
} 

class GetLearningGoalsAsync extends AsyncTask<String, Void, ArrayList<LearningGoal>> { 

    private Dialog loadingDialog; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     loadingDialog = ProgressDialog.show(GetLearningGoalsList.this, "Please wait", "Loading..."); 
    } 

    @Override 
    protected ArrayList<LearningGoal> doInBackground(String... params) { 

     int id = 0; 
     email = (String) getIntent().getSerializableExtra("email"); 
     password = (String) getIntent().getSerializableExtra("password"); 
     int idChild = (int) getIntent().getSerializableExtra("idChild"); 
     String name = null; 
     String start_date = null; 
     String end_date = null; 

     try { 

      List<BasicNameValuePair> parameters = new LinkedList<BasicNameValuePair>(); 
      parameters.add(new BasicNameValuePair("idchild", Integer.toString(idChild))); 

      SendRequest sr = new SendRequest(); 
      String result = sr.sendHttpRequest("http://" + sr.getIP_ADDRESS() + "/learningchild/list"+ "?"+ URLEncodedUtils.format(parameters, "utf-8"), "POST", true, email, password); 

      String jsonResult = "{ \"learningGoals\":" + result + "}"; 

      Log.d("result1", jsonResult); 


      //Manage JSON result 
      JSONObject jsonObject = new JSONObject(jsonResult); 
      JSONArray learningGoalsArray = jsonObject.getJSONArray("learningGoals"); 

      for (int i = 0; i < learningGoalsArray.length(); ++i) { 
       JSONObject learningGoal = learningGoalsArray.getJSONObject(i); 
       id = learningGoal.getInt("id"); 
       name = learningGoal.getString("name"); 
       start_date = learningGoal.getString("start_date"); 
       end_date = learningGoal.getString("end_date"); 


       childrenLearningList.add(new LearningGoal(id,name,start_date,end_date)); 
      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return childrenLearningList; 

    } 

    @Override 
    protected void onPostExecute(final ArrayList<LearningGoal> learningListInformation) { 
     loadingDialog.dismiss(); 
     if(learningListInformation.size() > 0) { 
      CustomListLearningGoalAdapter adapter = new CustomListLearningGoalAdapter(GetLearningGoalsList.this, learningListInformation); 
      itemsListView.setAdapter(adapter); 
     } 
     else{ 
      Toast.makeText(getApplicationContext(), "Impossible de récupérer la liste des scénarios de cet enfant", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 
} 

ありがとうございます。

答えて

1

あなたはそれがその後、ちょうど従う

として、前ボタンのクリックに)(のではなく、新たな意図を仕上げを呼び出しているようGetLearningGoalsListに

@Override 
public void onClick(View v) { 
    Intent myIntent = new Intent(GetLearningGoalsList.this, GetChildrenList.class); 
    myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(myIntent); 
    return; 
} 

を交換GetChildrenList状態を維持したい場合with

@Override 
public void onClick(View v) { 
    finish(); 
} 
+0

Thあなたのお手伝いをします。それは良い答えです。しかし、今では、2番目のアクティビティが3番目のアクティビティで、どの情報も失わずに最初のアクティビティに戻したい場合は、どうすればいいのでしょうか。 – JackR

+0

ポイントを取得しないでください、3番目のアクティビティは何ですか? – Pavan

+0

私の最初の投稿で私の2番目の活動が私の3番目の活動であれば。したがって、アクティビティ1とアクティビティ2の間にアクティビティがあります。どのようにして最初のアクティビティに戻り、離脱した状態を回復できますか? – JackR

関連する問題