Android从Java设置ImageView源

时间:2015-04-20 13:34:12

标签: java android android-studio sharedpreferences

我想在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));

ERROR:

Cannot resolve symbol 'value'

如何解决此错误?

5 个答案:

答案 0 :(得分:2)

如果您正在处理Resources文件夹中的可绘制名称,那么您的问题就是其中一个选项: -

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

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

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

Gradle文件&#34;模块:应用&#34;

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

答案 1 :(得分:1)

试试这个简单的代码

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

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

答案 2 :(得分:1)

您是否尝试从可绘制文件夹加载图像或从Internet下载图像? 这样:

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

如果您的某个可绘制文件夹中有value.png文件,则可以正常工作。如果您尝试从网络加载图像(例如:http://www.exampple.com/storage/images/filename.jpeg),您需要先下载它并将位图设置为ImageView源。有很多第三方图书馆这样做。看看Picasso

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

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

dependencies {
...
}

您需要在其中添加此行:

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

答案 3 :(得分:0)

试试这个:

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);

注意:这是示例代码。

答案 4 :(得分:0)

您想要使用在线图像文件设置imageview的背景。您可以在项目中使用this example。使用这个很容易。

同样在您的代码中,您应该在从上面的链接添加类后更改一些行:

@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);
}
祝你好运。