2012-04-12 7 views
0

Ich baue eine Benutzeroberfläche basierend auf JSON-Objekte in einer Methode gesendet. Bei jeder Ausführung der Methode wird der Benutzeroberfläche eine neue Zeile hinzugefügt. Ich brauche meine chartsButtonListener, um auf das JSONObject question zugreifen zu können.Erstellen einer Aktivität von Button klicken

public void buildQuestions(JSONObject question) throws JSONException { 
    LayoutInflater inflater = (LayoutInflater) getActivity(). 
    getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    questionContainer = (TableLayout) mainLayout.findViewById(R.id.questionContainer); 

    View questionBox = inflater.inflate(R.layout.question, null); 
    questionBox.setId(Integer.parseInt(question.getString("id"))); 
    TextView title = (TextView) questionBox.findViewById(R.id.questionTextView); 
    title.setText(question.getString("title")); 

    //omitted code for verbosity 

    Button chartsButton = (Button) questionBox.findViewById(R.id.chartsButton); 

    Button submitButton = (Button) questionBox.findViewById(R.id.submitButton); 
    chartsButton.setOnClickListener(chartsListener); 
    submitButton.setOnClickListener(submitListener); 

    TableRow tr = (TableRow) questionBox; 
    TableLayout.LayoutParams trParams = new TableLayout.LayoutParams(
    TableLayout.LayoutParams.MATCH_PARENT, 
    TableLayout.LayoutParams.MATCH_PARENT); 
    trParams.setMargins(leftMargin, topMargin, rightMargin, bottomMargin); 
    tr.setLayoutParams(trParams); 
    LinearLayout progressRow = (LinearLayout) mainLayout.findViewById(R.id.progressRow); 
    progressRow.setVisibility(View.GONE); 
    questionContainer.addView(tr); 
} 

public OnClickListener chartsListener = new OnClickListener() { 
    public void onClick(View v) { 
     Intent chart = new Intent(); 
     chart.setClass(getActivity(), Chart.class); 
     Log.v("", v.getParent().getClass().toString());//returns the TableRow 
     startActivity(chart); 
    } 
}; 

Ich bin vertraut mit aufgesetztem extra, aber es wäre am besten, wenn ich einfach die Frage Objekt an den Hörer direkt passieren konnte, so konnte ich es dann nach vorne entlang das Intent. Irgendwelche Vorschläge?

Antwort

1

Sie können View.setTag (Object) verwenden, um ein beliebiges Objekt einer Ansicht zuzuordnen.

chartsButton.setTag (Frage);

Und in Ihrem OnClick können Sie tun: Frage q = (Frage) v.getTag();