将字符串绑定到TableView / TextView ID

时间:2010-08-13 21:13:46

标签: android

我有一个Android活动,显示日志条目列表(使用游标适配器和列表视图)。当其中一个条目被触摸时,它会将一个intent(使用包含日志详细信息的bundle对象作为字符串传递)传递给另一个activity。新活动应该在我创建的自定义TableView xml文件中显示详细信息,但我无法弄清楚如何将bundle字符串绑定到TableView的TextView中定义的id。

我在下面列出了大部分代码,因此您可以看到我想要完成的任务。

ViewEntry类:

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);

    }         

}

这是我试图绑定到的view_list.xml:

<?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" />

                                                                                                                                           

我知道我想做的事情是不对的,但希望这有助于说明我的意图。

1 个答案:

答案 0 :(得分:0)

我从来没有发现我的方法是否可行,但我采取了不同的方向来获得预期的结果。我最终使用的解决方案是获取特定的textview id,然后使用代码中的setText()方法使用字符串设置文本。这可能是解决这个设计问题的可接受的方法,但能够将字符串绑定到xml而不是用代码操作它会很好。

我已粘贴以下代码,以供将来编码人员参考解决方案:

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);
    }         
}