我正在尝试在循环中使用LayoutInflater,但每次实例化其中一个人时,我需要修改每个实例中至少2个TextView。我目前所拥有的内容恰当地即时发布并添加了膨胀的xml视图,就像我想要的那样,但结果是只有第一个instatiaton的资源被修改,因此它只会被多次覆盖。
LayoutInflater inflater;
TextView eTitle;
for(String[] episode : episodes) {
//Log.d("Episodes", episode[0] + " / " + episode[2]);
inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.episode_list_item, listView);
eTitle = (TextView) findViewById(R.id.episode_list_item_title);
eTitle.setText(episode[2]);
}
我的列表的示例输出:
它应该看起来像这样:
我需要做些什么来确保我从我的虚增布局中获取相应的唯一textview id?
答案 0 :(得分:8)
为什么不使用ListView?
LayoutInflater inflater = inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for(String[] episode : episodes) {
View view = inflater.inflate(R.layout.episode_list_item, null);
mTitle = (TextView) view.findViewById(R.id.episode_list_item_title);
mTitle.setText(episode[2]);
listView.addView(view);
}
答案 1 :(得分:1)
我假设您TextView
中有一些LinearLayout
。有一点是他们不能拥有相同的id
。因此,假设您有4个TextView
,然后给出不同的id
个,说tv1
,tv2
等。
现在在onCreate
方法中,将所有这些textView初始化为:
等等......
myTextView1= (TextView)findViewByid(R.id.tv1);
在你获得“剧集”的功能中试试这个:
`myTextView1.setText(情节[0]);
myTextView2.setText(情节[1]);
您不必使用任何inflater
因为它已存在于活动layout
文件中,该文件会自动在onCreate
中完成。
答案 2 :(得分:0)
更改行
inflater.inflate(R.layout.episode_list_item, listView);
eTitle = (TextView) findViewById(R.id.episode_list_item_title);
成行:
eTitle =inflater.inflate(R.layout.episode_list_item, listView, false);
listView.addChild(eTitle );
View eTitle =inflater.inflate(R.layout.episode_list_item, listView, true);
的单行结构根本就没有真正起作用。
aqs是正确的(我每天第二次向他致意),动态创建id,如果你等待很多,你的eTitle的xml布局应该没有id。
答案 3 :(得分:0)
我相信你忘记捕捉正在膨胀的视图,然后在该视图中查看新控件。
这是您的原始代码:
inflater.inflate(R.layout.episode_list_item, listView);
eTitle = (TextView) findViewById(R.id.episode_list_item_title);
我认为您的代码应该更像这样(查找膨胀视图包含的视图):
View new_view = inflater.inflate(R.layout.episode_list_item, listView, false);
eTitle = (TextView) new_view.findViewById(R.id.episode_list_item_title);
eTitle.setText(episode[2]);
listView.addView(new_view);
这就是我的代码按预期工作的原因。
希望有所帮助!
约翰