Java 将图像从URL加载到gridview
我有一个gridview,它应该包含一个图像和一个文本。我正在使用毕加索加载图像,但当我运行应用程序时,图像视图中没有显示任何内容! 下面是我的MainActivity.java代码:Java 将图像从URL加载到gridview,java,android,gridview,Java,Android,Gridview,我有一个gridview,它应该包含一个图像和一个文本。我正在使用毕加索加载图像,但当我运行应用程序时,图像视图中没有显示任何内容! 下面是我的MainActivity.java代码: import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Gr
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.GridView;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
GridView gv;
Context context;
ArrayList prgmName;
public static String [] prgmNameList={"C++","VB.NET","JAVA", "JavaScript", "MySQL", "PHP"};
public static String [] prgmImgFiles = {"cpp.png", "vb.net.png", "java.png", "js.png", "mysql.png", "php.png"};
public static Integer [] prgmImages={R.mipmap.img_0, R.mipmap.img_1, R.mipmap.img_2};
public ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(prgmNameList));
public ArrayList<Integer> arrayList2 = new ArrayList<Integer>(Arrays.asList(prgmImages));
public ArrayList<String> arrayList3 = new ArrayList<String>(Arrays.asList(prgmImgFiles));
public static GridViewAdapter gvd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onLoadClick(View v)
{
gv=(GridView) findViewById(R.id.gridView2);
gvd = new GridViewAdapter(this, arrayList, arrayList3);
gv.setAdapter(gvd);
ImageView iv2 = (ImageView)findViewById(R.id.imageViewTest);
// addItem("JavaScript", "http://10.0.2.2/picgal/images/js.png");
Picasso.with(this).load("http://10.0.2.2/picgal/images/java.png").into(iv2);
}
public void addItem(String txt, String ImgID)
{
arrayList.add(txt);
arrayList3.add(ImgID);
gvd.notifyDataSetChanged();
}
}
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
/**
* Created by ITM on 7/4/2016.
*/
public class GridViewAdapter extends BaseAdapter {
ArrayList<String> result;
Context context;
ArrayList<String> imageId;
private static LayoutInflater inflater=null;
public static final String server = "http://10.0.2.2/picgal/images/";
public Holder holder=new Holder();
public GridViewAdapter(MainActivity mainActivity, ArrayList<String> prgmNameList, ArrayList<String> prgmImages) {
// TODO Auto-generated constructor stub
result=prgmNameList;
context=mainActivity;
imageId=prgmImages;
inflater = ( LayoutInflater )context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return result.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public class Holder
{
public TextView tv;
public ImageView img;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View rowView;
rowView = inflater.inflate(R.layout.img_layout, null);
holder.tv=(TextView) rowView.findViewById(R.id.txt);
holder.img=(ImageView) rowView.findViewById(R.id.img);
holder.tv.setText(result.get(position));
Log.i("getView", imageId.get(position));
Picasso.with(context).load(imageId.get(position)).into(holder.img);
// holder.img.setImageResource(imageId.get(position));
rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "You Clicked " + result.get(position) +"\n"+getCount(), Toast.LENGTH_LONG).show();
}
});
return rowView;
}
}
导入android.content.Context;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.GridView;
导入android.widget.ImageView;
导入com.squareup.picasso.picasso;
导入java.util.ArrayList;
导入java.util.array;
公共类MainActivity扩展了AppCompatActivity{
GridView gv;
语境;
ArrayList prgmName;
公共静态字符串[]prgmNameList={“C++”,“VB.NET”,“JAVA”,“JavaScript”,“MySQL”,“PHP”};
公共静态字符串[]prgmImgFiles={“cpp.png”、“vb.net.png”、“java.png”、“js.png”、“mysql.png”、“php.png”};
公共静态整数[]prgmImages={R.mipmap.img_0,R.mipmap.img_1,R.mipmap.img_2};
public ArrayList ArrayList=新的ArrayList(Arrays.asList(prgmNameList));
public ArrayList arrayList2=新的ArrayList(Arrays.asList(prgmImages));
public ArrayList arrayList3=新的ArrayList(Arrays.asList(prgmImgFiles));
公共静态GridViewAdapter gvd;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
公共void onload单击(视图v)
{
gv=(GridView)findViewById(R.id.gridView2);
gvd=新的GridViewAdapter(this,arrayList,arrayList 3);
gv.设置适配器(gvd);
ImageView iv2=(ImageView)findViewById(R.id.imageViewTest);
//addItem(“JavaScript”http://10.0.2.2/picgal/images/js.png");
毕加索。用(这个)。加载(“http://10.0.2.2/picgal/images/java.png)改为(iv2);
}
公共无效附加项(字符串txt、字符串ImgID)
{
arrayList.add(txt);
arrayList3.add(ImgID);
gvd.notifyDataSetChanged();
}
}
下面是我的GridViewAdapter.java代码:
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.GridView;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
GridView gv;
Context context;
ArrayList prgmName;
public static String [] prgmNameList={"C++","VB.NET","JAVA", "JavaScript", "MySQL", "PHP"};
public static String [] prgmImgFiles = {"cpp.png", "vb.net.png", "java.png", "js.png", "mysql.png", "php.png"};
public static Integer [] prgmImages={R.mipmap.img_0, R.mipmap.img_1, R.mipmap.img_2};
public ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(prgmNameList));
public ArrayList<Integer> arrayList2 = new ArrayList<Integer>(Arrays.asList(prgmImages));
public ArrayList<String> arrayList3 = new ArrayList<String>(Arrays.asList(prgmImgFiles));
public static GridViewAdapter gvd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onLoadClick(View v)
{
gv=(GridView) findViewById(R.id.gridView2);
gvd = new GridViewAdapter(this, arrayList, arrayList3);
gv.setAdapter(gvd);
ImageView iv2 = (ImageView)findViewById(R.id.imageViewTest);
// addItem("JavaScript", "http://10.0.2.2/picgal/images/js.png");
Picasso.with(this).load("http://10.0.2.2/picgal/images/java.png").into(iv2);
}
public void addItem(String txt, String ImgID)
{
arrayList.add(txt);
arrayList3.add(ImgID);
gvd.notifyDataSetChanged();
}
}
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
/**
* Created by ITM on 7/4/2016.
*/
public class GridViewAdapter extends BaseAdapter {
ArrayList<String> result;
Context context;
ArrayList<String> imageId;
private static LayoutInflater inflater=null;
public static final String server = "http://10.0.2.2/picgal/images/";
public Holder holder=new Holder();
public GridViewAdapter(MainActivity mainActivity, ArrayList<String> prgmNameList, ArrayList<String> prgmImages) {
// TODO Auto-generated constructor stub
result=prgmNameList;
context=mainActivity;
imageId=prgmImages;
inflater = ( LayoutInflater )context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return result.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public class Holder
{
public TextView tv;
public ImageView img;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View rowView;
rowView = inflater.inflate(R.layout.img_layout, null);
holder.tv=(TextView) rowView.findViewById(R.id.txt);
holder.img=(ImageView) rowView.findViewById(R.id.img);
holder.tv.setText(result.get(position));
Log.i("getView", imageId.get(position));
Picasso.with(context).load(imageId.get(position)).into(holder.img);
// holder.img.setImageResource(imageId.get(position));
rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "You Clicked " + result.get(position) +"\n"+getCount(), Toast.LENGTH_LONG).show();
}
});
return rowView;
}
}
导入android.content.Context;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.squareup.picasso.picasso;
导入java.util.ArrayList;
/**
*由ITM于2016年7月4日创建。
*/
公共类GridViewAdapter扩展了BaseAdapter{
阵列列表结果;
语境;
ArrayList imageId;
专用静态充气机=空;
公共静态最终字符串服务器=”http://10.0.2.2/picgal/images/";
公共持有人=新持有人();
公共GridViewAdapter(MainActivity MainActivity、ArrayList prgmNameList、ArrayList prgmImages){
//TODO自动生成的构造函数存根
结果=prgmNameList;
上下文=主要活动;
imageId=prgmImages;
充气器=(充气器)上下文。
getSystemService(上下文布局\充气机\服务);
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回result.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
公共类持有者
{
公共图文电视;
公共图像视图img;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视图行视图;
rowView=充气机。充气(R.layout.img_布局,空);
holder.tv=(TextView)rowView.findviewbyd(R.id.txt);
holder.img=(ImageView)rowView.findviewbyd(R.id.img);
holder.tv.setText(result.get(position));
Log.i(“getView”,imageId.get(position));
毕加索.with(context).load(imageId.get(position)).into(holder.img);
//holder.img.setImageResource(imageId.get(position));
rowView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Toast.makeText(上下文,“您单击了”+result.get(position)+“\n”+getCount(),Toast.LENGTH\u LONG.show();
}
});
返回行视图;
}
}
活动_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.badihbarakat.gridviewapp.MainActivity">
<GridView
android:layout_width="wrap_content"
android:layout_height="250dp"
android:id="@+id/gridView2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="#ffe5e5"
android:columnWidth="100dp"
android:drawSelectorOnTop="true"
android:gravity="center"
android:numColumns="auto_fit"
android:stretchMode="spacingWidthUniform"
android:verticalSpacing="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:scrollIndicators="left" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Load"
android:id="@+id/btnLoad"
android:layout_below="@+id/gridView2"
android:layout_centerHorizontal="true"
android:onClick="onLoadClick" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageViewTest"
android:layout_below="@+id/btnLoad"
android:layout_centerHorizontal="true" />
</RelativeLayout>
img_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true">
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/frame" />
</FrameLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txt"
android:textAlignment="center"/>
</LinearLayout>
我在按钮下方添加了一个测试图像视图,以测试毕加索对象的工作情况。它工作得很好。谁能帮忙吗。
谢谢我用过的最好的ImageLoader库
我使用过的最好的ImageLoader库
1.您在gridView的构造函数中传递了错误的参数
gvd = new GridViewAdapter(this, arrayList, arrayList3);
应该是
gvd = new GridViewAdapter(this, arrayList, arrayList2);
正如代码中所述,arrayList2由图像组成
2.在适配器中,更改构造函数中的第二个参数:
from ArrayList<String> to ArrayList<Integer>
public GridViewAdapter(MainActivity mainActivity, ArrayList<String> prgmNameList, ArrayList<Integer> prgmImages) {
//...
1.您在gridView的构造函数中传递了错误的参数
gvd = new GridViewAdapter(this, arrayList, arrayList3);
应该是
gvd = new GridViewAdapter(this, arrayList, arrayList2);
正如代码中所述,arrayList2由图像组成
2.在适配器中,更改构造函数中的第二个参数:
from ArrayList<String> to ArrayList<Integer>
public GridViewAdapter(MainActivity mainActivity, ArrayList<String> prgmNameList, ArrayList<Integer> prgmImages) {
//...
感谢所有在这个问题上提供帮助的人。 实际上,在修改毕加索代码后,我发现图像文件的路径丢失了! 我所说的是:
Picasso.with(context).load(imageId.get(position)).into(holder.img);
由于imageId.get(position)只包含文件名,而不包含服务器上的完整路径,毕加索无法找到该文件!
正确的代码是:
Picasso.with(context).load(server+imageId.get(position)).into(holder.img);
其中server是一个字符串,包含images文件夹的完整路径。
再次感谢大家。感谢大家在这个问题上的帮助。 实际上,在修改毕加索代码后,我发现图像文件的路径丢失了! 我所说的是:
Picasso.with(context).load(imageId.get(position)).into(holder.img);
作为imageId.get(