简体   繁体   English

动态获取图像到ImageView

[英]Get image into ImageView dynamically

What my program is currently doing , it searches in a database for an ID(inputed by the user), and based on that it displays the title, and the respective "picture.jpg"(which is just a string). 我的程序当前正在执行的操作是,它在数据库中搜索ID(由用户输入),并在此基础上显示标题和相应的“ picture.jpg”(仅仅是一个字符串)。

What I want to do, is I want to take the string(picture.jpg), and use that to search on the server. 我想要做的是我要获取字符串(picture.jpg),并使用它在服务器上进行搜索。 So in the end it should be something like: 所以最后应该是这样的:

  http://192.168.1.254/images/picture.jpg. And it should also display the picture. SecondActivity.java This is how my whole code looks like: package br.exemplozxingintegration; import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.ClipData; import android.content.ClipboardManager; import android.media.Image; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.ImageRequest; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import com.squareup.picasso.Picasso; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class SecondActivity extends AppCompatActivity implements View.OnClickListener { private EditText pastetext; private ClipboardManager myClipboard; private ClipData myClip; private Button btn; private EditText textView1; private Button buttonGet; private TextView textViewResult; private ImageView ImageView1; private ProgressDialog loading; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); pastetext = (EditText) findViewById(R.id.textView1); btn = (Button)findViewById(R.id.buttonPaste); btn.performClick(); textView1 = (EditText) findViewById(R.id.textView1); buttonGet = (Button) findViewById(R.id.buttonGet); textViewResult = (TextView) findViewById(R.id.textViewResult); Image = (ImageView) findViewById(R.id.imageView1); buttonGet.setOnClickListener(this); } @SuppressLint("NewApi") public void paste(View view) { ClipData cp = myClipboard.getPrimaryClip(); ClipData.Item item = cp.getItemAt(0); String text = item.getText().toString(); pastetext.setText(text); Toast.makeText(getApplicationContext(), "Text Pasted", Toast.LENGTH_SHORT).show(); } private void getData() { String qrcode = textView1.getText().toString().trim(); if (qrcode.equals("")) { Toast.makeText(this, "", Toast.LENGTH_LONG).show(); return; } loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false); String url = Config.DATA_URL+textView1.getText().toString().trim(); StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { @Override public void onResponse(String response) { loading.dismiss(); showJSON(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(SecondActivity.this,error.getMessage().toString(),Toast.LENGTH_LONG).show(); } }); RequestQueue requestQueue = Volley.newRequestQueue(this); requestQueue.add(stringRequest); } private void showJSON(String response){ String title=""; String image = ""; try { JSONObject jsonObject = new JSONObject(response); JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); JSONObject androidData = result.getJSONObject(0); title = androidData.getString(Config.KEY_TITLE); image = androidData.getString(Config.KEY_IMAGE); } catch (JSONException e) { e.printStackTrace(); } textViewResult.setText("Title:\\t" + title);//+"\\nImagine :\\t"+ image); //int id = getResources().getIdentifier("http://192.168.1.254/2015/380panel/uploads/images/sm/" + image, null, null); //ImageView1.setImageURI(id); Picasso.with(this).load("http://192.168.1.254/2015/380panel/uploads/images/sm/" + image).into(ImageView1); } @Override public void onClick(View v) { getData(); } } // } 

借助Picasso库轻松实现: http//square.github.io/picasso/

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

Picasso Library: http://square.github.io/picasso/ 毕加索图书馆: http//square.github.io/picasso/

Add this to gradle file in dependency : 将此添加到依赖的gradle文件中:

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

After add this library, try loading image url like this. 添加此库后,尝试像这样加载图像URL。

Picasso.with(context).load("<Any Image URL>").into(imageView);

Hope it will help you ! 希望对您有所帮助!

Since you are alreadu using volley , no need to use Picasso.Volley provides you with a NetworkImageView.Simply replace your ImageView in xml with com.android.volley.toolbox.NetworkImageView and in code just use 由于您已经在使用volley,因此无需使用Picasso.Volley为您提供了NetworkImageView。只需将xml.com中的ImageView替换为com.android.volley.toolbox.NetworkImageView而在代码中只需使用

NetworkImageView image = (NetworkImageView)findViewById(R.id.imageView);
image.setImageUrl("your url");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM