我为每行设置了一个包含布局XML的列表视图:
this.setContentView(R.layout.item_view);
ListView m_ListView = this.getListView();
m_ListView.setTextFilterEnabled(true);
m_ListView.setItemsCanFocus(false);
m_ListView.setCacheColorHint(0x00000000);
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ArrayList<View> views=new ArrayList<View>();
e = mInflater.inflate(R.layout.item_first, null);
views.add(e);
r = mInflater.inflate(R.layout.item_second, null);
views.add(r);
mAdapter = new SillyAdapter(views);
setListAdapter(mAdapter);
现在例如我在TextView
中有一个item_first
,我想从代码中设置它:
TextView name = (TextView)findViewById(R.id.textView1);
name.setText(m_item.name);
但是名字总是空的。知道为什么会这样吗?
答案 0 :(得分:1)
您必须在代码中进行以下更改。
TextView name = (TextView)e.findViewById(R.id.textView1);
name.setText(m_item.name);
由于您从错误的视图调用findViewById方法或者可能是从活动调用,因此您将名称设置为null。 因为你膨胀如下
e = mInflater.inflate(R.layout.item_first, null);
你必须在膨胀的视图 e 上调用findViewById。这样你就可以得到包含在xml中的id R.id.textView1 的textview实例 R.layout.item_first
希望这会有所帮助。