Android 从 Java 设置 ImageView 源

Android Set ImageView Source from Java

我想在 Android、

中设置图像源

XML :

 <ImageView
    android:layout_width="200dp"
    android:layout_height="300dp"
    android:id="@+id/main"
    android:src="@drawable/malayali"
    android:layout_marginTop="100dp"
    android:layout_marginLeft="80dp"
    />

Java :

public class MainActivity extends ActionBarActivity {

  public SharedPreferences exactPreferences;


  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    exactPreferences = getSharedPreferences("details",MODE_PRIVATE);

    getSupportActionBar().hide();

    new RetriveIcon().execute();    //Api Calling & Storing value in SharedPreference

    String value = exactPreferences.getString("main_url",null);

    Log.i("from exactpreference",value);  // Working fine !!!  (http://www.exampple.com/storage/images/filename.jpeg)

   ImageView banner = (ImageView)findViewById(R.id.main);
   banner.setImageDrawable(getResources().getDrawable(R.drawable.value));

    setContentView(R.layout.activity_main);

 }
}

androidStudio 将以下值行中的错误显示为红色。

banner.setImageDrawable(getResources().getDrawable(R.drawable.value));

错误:

Cannot resolve symbol 'value'

我该如何解决这个错误?

试试这个:

String uri = "@drawable/myresource.png";

int imageResource = getResources().getIdentifier(uri, null, getPackageName());

imageview= (ImageView)findViewById(R.id.imageView);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);

注意:这是示例代码。

如果您正在处理 Resources 文件夹中的可绘制对象名称,那么您的问题是这些选项之一:-

1)您的资源中没有 drawable 值。 确保它存在于您的资源文件夹中。

2)您在 activity 中导入了错误的 R 确保您导入的是 R 而非 android 应用程序。

如果您对图像使用直接 URL。我建议您为此使用 Universal Lazy Loader 第三方。您所要做的就是直接传递图像 URL 和 ImageView 它会为您完成工作。

在您的 Gradle 文件中 "Module:app"

dependencies {
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
    ....
 }

试试这个简单的代码

 ImageView banner = (ImageView)findViewById(R.id.main);
 banner.setBackgroundResource(R.drawable.value);

但图像名称必须是值并存储在您的可绘制文件夹中。

您是要从可绘制文件夹加载图像还是从 Internet 下载图像? 这个:

banner.setImageDrawable(getResources().getDrawable(R.drawable.value));

如果您的一个可绘制文件夹中有一个 value.png 文件,则可以使用。如果您尝试从网络加载图像(即像这样的东西:http://www.exampple.com/storage/images/filename.jpeg), you'll need to download it first and set the bitmap as an ImageView source. There are many 3rd party libraries doing this. Take a look at Picasso:

Picasso.with(this).load(value).into(banner);

编辑: 为了添加 Picasso,您需要更新 build.gradle 文件(指模块而非项目的文件)。你应该有这样的部分:

dependencies {
...
}

你需要在其中添加这一行:

compile 'com.squareup.picasso:picasso:2.5.2'

您想使用联机图像文件设置 imageview 的背景。您可以在项目中使用 this example。使用起来非常简单。

同样在你的代码中,你应该在从上面添加 类 之后更改一些行 link:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    exactPreferences = getSharedPreferences("details",MODE_PRIVATE);

    getSupportActionBar().hide();

    new RetriveIcon().execute();    //Api Calling & Storing value in SharedPreference

    String value = exactPreferences.getString("main_url",null);

    Log.i("from exactpreference",value);  // Working fine !!!  (http://www.exampple.com/storage/images/filename.jpeg)

    // ImageLoader class instance
    ImageLoader imgLoader = new ImageLoader(getApplicationContext());

    ImageView banner = (ImageView)findViewById(R.id.main);
    imgLoader.DisplayImage(value, 0, banner);
}

祝你好运。