![](/img/trans.png)
[英]how to set the text and image in particular item textview and imageview in horizontal listview
[英]How can I set a ImageView in a custom ListView that depends on the text of the TextView?
我有一个自定义ListView
,其中rowItem
包含TextView
和ImageView
。 可以从用户动态添加rowItems
。
那么如何将特定的ImageView
设置为特定的TextView
。 例如,文本“ bird”获得名为Bird的ImageView
,依此类推。
我用SwitchCase
尝试过,但是没有用。
我的ListView适配器:
class SessionItemAdapter extends ArrayAdapter<Map> {
final ArrayList<Map> values;
Context context;
SessionItemAdapter(Context context, ArrayList<Map> values) {
super(context, R.layout.session_list_layout_row, values);
this.values = values;
this.context = context;
}
@Override
public View getView(final int position, View view, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.session_list_layout_row, parent, false);
TextView tv = (TextView) rowView.findViewById(R.id.stepTime);
final int rowId = (Integer) values.get(position).get("id");
int beepStringId = getResources().getIdentifier("exercise_typ_" + values.get(position).get("type"), "string", getPackageName());
rowView.setTag(rowId);
tv.setText(getResources().getString(beepStringId));
ImageView image =(ImageView) rowView.findViewById(R.id.imageView2);
switch (rowId) {
case 1 : image.setImageResource(R.drawable.ic_launcher);
break;
case 2 : image.setImageResource(R.drawable.ic_down);
break;
}
ImageButton deleteSession = (ImageButton) rowView.findViewById(R.id.session_item_del);
deleteSession.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*if (!startStopToggle.isChecked()) {*/
sessionAdapter.remove(values.get(position));
sessionAdapter.notifyDataSetChanged();
}
});
return rowView;
}
//in your adapter getAllPlayers() would be something like this
public List<String> getAllPlayers() {
List<String> list = new ArrayList<String>();
for (Map item : values) {
int beepStringId = context.getResources().getIdentifier("exercise_typ_"
+ item.get("type"), "string", context.getPackageName());
String str = context.getResources().getString(beepStringId);
list.add(str);
}
return list;
}
}
当TextView充满“ bird”一词时,您可以使用它用适当的图像填充ImageView。
txtView.setText(textVar);
if (txtView.getText().equals("bird")) {
imageView.setImageResource(R.drawable.bird_drawable);
}
一种实现方法是,如果您可以控制可绘制名称的命名,则可以将可绘制资源命名为与要匹配的文本/标题相同的名称。 因此,您将拥有可绘制的名称,例如birds.png,animals.png等。然后,您可以使用此答案来动态获取可绘制的图像并附加到图像视图。 所以你的代码应该看起来像这样
int drawableResourceId = context.getResources().getIdentifier(getResources().getString(beepStringId), "drawable", context.getPackageName());
imageView.setImageResource(drawableResourceId);
这种方法的缺点是,如果标题中有空格或特殊字符,则必须分别处理。 但是对于足够简单的标题集就足够了。
另外,您也可以从API 19开始使用切换用例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.