【问题标题】:setting image dynamically from database by its name通过名称从数据库动态设置图像
【发布时间】:2013-07-05 07:22:36
【问题描述】:

我正在从数据库中获取图像的名称,例如 R.drawable.abc 在字符串 Arraylist 中 为此,我使用以下代码在列表视图中设置图像:

int id = getResources().getIdentifier("com.mypackage:drawable/" + arr_img.get(position),
                        null, null);
imageview.setImageResource(id);

这里 arr_img 是我拥有所有名称的 ArrayList 类型。 但是图片看不到..请帮忙谢谢。

-----代码--------

private class MyCustomAdapter extends ArrayAdapter<String> {

    private ArrayList<String> myAdptr;

    public MyCustomAdapter(Context context, int textViewResourceId,

    ArrayList<String> sList) {
        super(context, textViewResourceId, sList);
        this.myAdptr = new ArrayList<String>();
        this.myAdptr.addAll(stg1);
    }

    private class ViewHolder {
        TextView code;
        CheckBox name;
        ImageView imageview;
    }

    @Override
    public View getView(final int position, View convertView,
            ViewGroup parent) {

        ViewHolder holder = null;

        Log.v("ConvertView", String.valueOf(position));

        if (convertView == null) {

            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            convertView = vi.inflate(R.layout.new_search_adptr, null);

            holder = new ViewHolder();
            holder.code = (TextView) convertView
                    .findViewById(R.id.adapterText1);
            holder.name = (CheckBox) convertView
                    .findViewById(R.id.checkBox1);

            holder.imageview = (ImageView) convertView
                    .findViewById(R.id.imageView1);

            convertView.setTag(holder);

            holder.name.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                    CheckBox cb = (CheckBox) v;

                    if (cb.isChecked()) {

                        // User checked (selected) a car
                        // *********************************


                        if (cntr > 1) {

                            // More than two cars selected

                            Toast.makeText(getApplicationContext(),
                                    "Please select only two cars!",
                                    Toast.LENGTH_LONG).show();

                            cb.setChecked(false);

                        } else {

                            // car selected

                            if (cntr == 0) {
                                c1_make = arr_make.get(position);
                                c1_model = arr_model.get(position);
                                c1_ver = arr_ver.get(position);
                            }

                            if (cntr == 1) {
                                c2_make = arr_make.get(position);
                                c2_model = arr_model.get(position);
                                c2_ver = arr_ver.get(position);
                            }

                            cntr++;

                        }

                    } else {

                        // User Unchecked (de - selected) a car
                        // *********************************


                        cntr--;

                        if (cntr == 0) {
                            c1_make = null;
                            c1_model = null;
                            c1_ver = null;
                        }

                        if (cntr == 1) {
                            c2_make = null;
                            c2_model = null;
                            c2_ver = null;
                        }

                    }



                }
            });

        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        String state = myAdptr.get(position);

        holder.code.setText(stg1.get(position).toString());


        for (int m = 0; m < arr_img.size(); m++) {

            System.out.println(m+" --- "+arr_img.get(m));
        }

        int id = getResources()
                .getIdentifier(
                        "com.carlist:drawable/" + arr_img.get(position),
                        null, null);
        holder.imageview.setImageResource(id);

        return convertView;
    }
}

【问题讨论】:

  • 你的图片存储在arraylist中了吗?
  • 没有图片在drawable文件夹中..它的名字在arraylist中
  • 请把你的代码贴在你实现这个的地方:
  • 你存储在arraylist中的图片名称,如果它包含.png或.jpg扩展名?
  • 不,它没有任何扩展名

标签: android database image xml-drawable


【解决方案1】:

只需更改它可能会对您有所帮助。

 for (int m = 0; m < arr_img.size(); m++) {

         int id = getResources()
            .getIdentifier(
                    "com.carlist:drawable/" + arr_img.get(m),
                    null, null);
    holder.imageview.setImageResource(id);
    }

【讨论】:

    【解决方案2】:

    当您获得图像的文件名后,您可以使用以下代码部分之一将图像设置为图像视图。

    String imageName = "picture"
    int resID = getResources().getIdentifier(imageName, "drawable", "package.name");
    ImageView image;
    imageview.setImageResource(resID );
    

    或者你也可以试试下面的代码

    String imageId = "imageId"
    int resID = getResources().getIdentifier(imageString , "id", "package.name");
    ImageView image = (ImageView) findViewById(resID);
    

    【讨论】:

      猜你喜欢
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多