android - 如何添加取决于 ListView 中 TextView 文本的 ImageView

标签 android listview android-listview imageview switch-statement

我有一个自定义 ListView 和一个包含 TextViewImageViewRowItemRowItems 将动态添加。

我只想知道如何将 ImageView 添加到 TextView 中的特定文本。

因此,如果在 TextView 中显示“Title1”,则应将 ImageView “R.drawable.ic_title1” 添加到 RowItem 中。


这是我的代码

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(position){

                case 1 : image.setImageResource(R.drawable.ic_title1);
                    break;

                case 2 : image.setImageResource(R.drawable.ic_title2);
                    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;
        }


    }

我用 Switch 语句和 position 尝试了它,但只将 ImageView 设置为 RowItemcase 中写的位置。

最佳答案

您可以根据 TextView 的文本创建一个 switch-case 语句,如下所示

switch(tv.getText().toString()){

                case "Title1" : image.setImageResource(R.drawable.ic_title1);
                    break;

                case "Title2" : image.setImageResource(R.drawable.ic_title2);
                    break;

                default:
                    //Default image here, if no case found
                break;
}

注意:以上答案要求符合 JRE 1.7

关于android - 如何添加取决于 ListView 中 TextView 文本的 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28159294/

相关文章:

Android 在顶部和底部 ListView 上设置淡入淡出的 alpha 渐变,如 instagram 实时聊天

Android:如何从 strings.xml 中获取值到 ListView 中?

android - 定期工作请求是否应该立即执行?

android - 可以创建 LinearLayouts 的 GridVIew 吗?

android - 在 C++ 中打开创建的文件描述符的 Setvbuf?

android - 多列 ListView 显示零而不是数据库值

java - Android scrollview 去除蓝光

android - 滚动多个 ListViews for Android

java - 对 ListActivity 中的 ListView 进行排序

android - Listview 拉动刷新库并添加标题 View