2010-08-13 6 views
1

J'ai une activité Android qui affiche une liste d'entrées de journal (à l'aide d'un adaptateur de curseur et d'une liste). Lorsque l'une des entrées est touchée, elle déclenche une intention (transmise avec un objet de regroupement contenant les détails du journal en tant que chaînes) à une autre activité. La nouvelle activité est supposée afficher les détails dans un fichier xml TableView personnalisé que j'ai créé, mais je n'arrive pas à comprendre comment lier les chaînes du bundle aux ID définis dans le TextView de TableView.Liaison de chaînes à des ID TableView/TextView

J'ai inclus la plupart de mon code ci-dessous afin que vous puissiez voir ce que j'essaie d'accomplir.

viewentry Classe:

public class ViewEntry extends Activity{ 

public void onCreate(Bundle icicle) 
{ 
    super.onCreate(icicle); 
    setContentView(R.layout.view_list); 
    setTitle(R.string.view_entry_title); 
    TableView lv= (TableView)findViewById(R.id.viewlayout); 


    Bundle extras = getIntent().getExtras(); 
    if (extras != null){ 
     String date = extras.getString(plbDbAdapter.KEY_DATE); 
     String ident = extras.getString(plbDbAdapter.KEY_IDENT); 
     String type = extras.getString(plbDbAdapter.KEY_TYPE); 
     String from = extras.getString(plbDbAdapter.KEY_FROM); 
     String to = extras.getString(plbDbAdapter.KEY_TO); 
     String remark = extras.getString(plbDbAdapter.KEY_REMARK); 

     String[] from = new String[] { "date_h", "ident_h", "type_h", "from_h", "to_h", "remark_h"}; 
     int[] to = new int[] { R.id.v_date, R.id.v_ident, R.id.v_type, R.id.v_from, R.id.v_to, R.id.v_remark }; 
     ArrayAdapter details = new ArrayAdapter(this, R.layout.view_list, from, to); 
     setAdapter(details); 

     List<HashMap<String, String>> fillList = new ArrayList<HashMap<String, String>>(); 
     HashMap<String, String> map = new HashMap<String, String>(); 
        map.put("date_h", date); 
        map.put("ident_h", ident); 
        map.put("type_h", type); 
        map.put("from_h", from); 
        map.put("to_h", to); 
        map.put("remark_h", remark); 
        fillList.add(map); 
     SimpleAdapter viewadapt = new SimpleAdapter(this, fillList, R.layout.view_list, from, to); 
     lv.setAdapter(viewadapt); 

    }   

}

Voici view_list.xml Je suis en train de se lier à:

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/viewlayout" 
    android:stretchColumns="1"> 
<TableRow> 
    <TextView 
     android:gravity="left" 
     android:text="Date:" 
     android:padding="3dip" /> 
    <TextView 
     android:id="@+id/v_date" 
     android:gravity="right" 
     android:padding="3dip" /> 

Je sais ce que je suis en train de faire est pas juste, mais nous espérons qu'il aide à illustrer mon intention.

+0

Eh bien, on dirait que mon xml se est coupé, mais vous pouvez voir le premier id (v_date) Je suis en train de se lier à . – Charles

Répondre

0

Je n'ai jamais découvert si mon approche ci-dessus est possible, mais je suis allé dans une direction différente pour obtenir les résultats escomptés. La solution que j'ai fini par utiliser était d'obtenir l'id de textview spécifique, puis de définir le texte avec une chaîne en utilisant la méthode setText() dans le code. C'est probablement la façon acceptée d'aborder ce problème de conception, mais il serait bien de pouvoir lier des chaînes à xml au lieu de le manipuler avec du code.

J'ai collé le code ci-dessous pour les codeurs à venir référence à une solution:

public class ViewEntry extends Activity{ 

    public void onCreate(Bundle icicle) 
    { 
     super.onCreate(icicle); 
     setContentView(R.layout.view_list); 
     setTitle(R.string.view_entry_title); 
     TextView tv_date = (TextView)findViewById(R.id.tv_date); 
     TextView tv_ident = (TextView)findViewById(R.id.tv_ident); 
     TextView tv_type = (TextView)findViewById(R.id.tv_type); 
     TextView tv_from = (TextView)findViewById(R.id.tv_from); 
     TextView tv_to = (TextView)findViewById(R.id.tv_to); 
     TextView tv_remark = (TextView)findViewById(R.id.tv_remark); 

    Bundle extras = getIntent().getExtras(); 
    if (extras != null){ 
     String date = extras.getString(plbDbAdapter.KEY_DATE); 
     String ident = extras.getString(plbDbAdapter.KEY_IDENT); 
     String type = extras.getString(plbDbAdapter.KEY_TYPE); 
     String from = extras.getString(plbDbAdapter.KEY_FROM); 
     String to = extras.getString(plbDbAdapter.KEY_TO); 
     String remark = extras.getString(plbDbAdapter.KEY_REMARK); 

     tv_date.setText(date); 
     tv_ident.setText(ident); 
     tv_type.setText(type); 
     tv_from.setText(from); 
     tv_to.setText(to); 
     tv_remark.setText(remark); 
    }   
} 
Questions connexes