Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用哈希映射从url获取图像,不需要';我不能展示它们_Java_Android - Fatal编程技术网

Java 使用哈希映射从url获取图像,不需要';我不能展示它们

Java 使用哈希映射从url获取图像,不需要';我不能展示它们,java,android,Java,Android,这里是android应用程序开发的初学者,我正在制作一个游戏新闻应用程序,在recycler视图网格中显示大量游戏(项目)。 除了url中的图像外,所有内容都显示正确。 以下是我的一些代码: SecondActivity.java public class SecondActivity extends AppCompatActivity { public ArrayList<HashMap<String, String>> mDataSource; protected

这里是android应用程序开发的初学者,我正在制作一个游戏新闻应用程序,在recycler视图网格中显示大量游戏(项目)。 除了url中的图像外,所有内容都显示正确。 以下是我的一些代码:

SecondActivity.java

public class SecondActivity extends AppCompatActivity {

public ArrayList<HashMap<String, String>> mDataSource;

protected RecyclerView mRecyclerView;
protected RecyclerView.LayoutManager mLayoutManager;
protected HomeItemAdapter mAdapter;

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


    initDataset();


    mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);


    mLayoutManager = new GridLayoutManager(this, 3);
    mRecyclerView.setLayoutManager(mLayoutManager);

    mAdapter = new HomeItemAdapter(this, mDataSource);

    mRecyclerView.setAdapter(mAdapter);

}


private void initDataset() {
    mDataSource = new ArrayList();
    HashMap<String, String> h1 = new HashMap();
    h1.put("name", "Super Meat Boy");
    h1.put("city", "Indie");
    h1.put("image_url","https://66.media.tumblr.com/tumblr_ldi4d79gyD1qd9jlto1_500.jpg");
    mDataSource.add(h1);
公共类SecondActivity扩展了AppCompatActivity{
公共ArrayList mDataSource;
受保护的回收视图mRecyclerView;
受保护的RecyclerView.LayoutManager mLayoutManager;
受保护的HomeItemAdapter mAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_秒);
initDataset();
mRecyclerView=(RecyclerView)findViewById(R.id.RecyclerView);
mLayoutManager=新的GridLayoutManager(这个,3);
mRecyclerView.setLayoutManager(mllayoutmanager);
mAdapter=新的HomeItemAdapter(此为mDataSource);
mRecyclerView.setAdapter(mAdapter);
}
私有void initDataset(){
mDataSource=newarraylist();
HashMap h1=新的HashMap();
h1.输入(“姓名”、“超级肉童”);
h1.put(“城市”、“独立”);
h1.put(“图像url”https://66.media.tumblr.com/tumblr_ldi4d79gyD1qd9jlto1_500.jpg");
mDataSource.add(h1);
HomeItemAdapter.java

public class HomeItemAdapter extends RecyclerView.Adapter<HomeItemAdapter.ViewHolder> {
private static final String TAG = "NTR-HomeItemAdapter";


public ArrayList<HashMap<String, String>> mDataSource;
private Context mContext;

public HomeItemAdapter(Context context, ArrayList<HashMap<String, String>> mDataSource) {
    this.mDataSource = mDataSource;
    this.mContext = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_home_item, viewGroup, false);

    return new ViewHolder(v);
}

@Override
public void onBindViewHolder(final ViewHolder viewHolder, int position) {
    Target target;
    Log.d(TAG, "Element " + position + " set.");

    viewHolder.getName().setText(mDataSource.get(position).get("name"));
    viewHolder.getCity().setText(mDataSource.get(position).get("city"));

    //Get Marquee
    viewHolder.getName().setSingleLine();
    viewHolder.getName().setEllipsize(TextUtils.TruncateAt.MARQUEE);
    viewHolder.getName().setHorizontallyScrolling(true);
    viewHolder.getName().setFocusableInTouchMode(true);
    viewHolder.getName().setSelected(true);
    viewHolder.getName().setMarqueeRepeatLimit(-1);

    viewHolder.getCity().setSingleLine();
    viewHolder.getCity().setEllipsize(TextUtils.TruncateAt.MARQUEE);
    viewHolder.getCity().setHorizontallyScrolling(true);
    viewHolder.getCity().setFocusableInTouchMode(true);
    viewHolder.getCity().setSelected(true);
    viewHolder.getCity().setMarqueeRepeatLimit(-1);

    // Get Dynamic Color
    target = new com.squareup.picasso.Target() {
        @Override
        public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
            Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
                public void onGenerated(Palette palette) {
                    if (palette !=null) {
                        viewHolder.getImageCover().setImageBitmap(bitmap);
                        Palette.Swatch vibrant = palette.getVibrantSwatch();
                        if(vibrant!=null) {
                            viewHolder.getCardItemHome().setBackgroundColor(vibrant.getRgb());
                            viewHolder.getName().setTextColor(vibrant.getTitleTextColor());
                            viewHolder.getCity().setTextColor(vibrant.getTitleTextColor());
                        }
                    }
                }
            });
        }

        @Override
        public void onBitmapFailed(Drawable errorDrawable) {
            viewHolder.getImageCover().setImageResource(R.drawable.cover);
        }

        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {

        }
    };
    Log.d(TAG,mDataSource.get(position).get("image_url"));

    Picasso.with(mContext)
            .load(mDataSource.get(position).get("image_url"))
            .into(target);

}

@Override
public int getItemCount() {
    return mDataSource.size();
}

public static class ViewHolder extends RecyclerView.ViewHolder {
    private final CardView cardItemHome;
    private final ImageView imgCover;
    private final TextView txtName;
    private final TextView txtCity;

    public ViewHolder(View v) {
        super(v);

        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG, "Element " + getPosition() + " clicked.");
            }
        });
        cardItemHome = (CardView) v.findViewById(R.id.card_item_home);
        txtName = (TextView) v.findViewById(R.id.txt_name);
        txtCity = (TextView) v.findViewById(R.id.txt_city);
        imgCover = (ImageView) v.findViewById(R.id.img_cover);

    }

    public CardView getCardItemHome() {
        return cardItemHome;
    }

    public TextView getName() {
        return txtName;
    }

    public TextView getCity() {
        return txtCity;
    }

    public ImageView getImageCover() {
        return imgCover;
    }

}
公共类HomeItemAdapter扩展了RecyclerView.Adapter{ 私有静态最终字符串TAG=“NTR HomeItemAdapter”; 公共ArrayList mDataSource; 私有上下文; 公共HomeItemAdapter(上下文,ArrayList mDataSource){ this.mDataSource=mDataSource; this.mContext=上下文; } @凌驾 公共视图持有者onCreateViewHolder(视图组视图组,int i){ 视图v=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.row\u home\u项目,视图组,false); 返回新的视图持有者(v); } @凌驾 public void onBindViewHolder(最终ViewHolder ViewHolder,int位置){ 目标; Log.d(标签,“元素”+位置+“设置”); viewHolder.getName().setText(mDataSource.get(position.get(“name”)); viewHolder.getCity().setText(mDataSource.get(position.get(“city”)); //获取字幕 viewHolder.getName().setSingleLine(); viewHolder.getName().setEllipsize(TextUtils.TruncateAt.MARQUEE); viewHolder.getName().setHorizontallyScrolling(true); viewHolder.getName().setFocusableInTouchMode(true); viewHolder.getName().setSelected(true); viewHolder.getName().setMarqueerPeatLimit(-1); viewHolder.getCity().setSingleLine(); viewHolder.getCity().setEllipsize(TextUtils.TruncateAt.MARQUEE); viewHolder.getCity().setHorizontallyScrolling(true); viewHolder.getCity().setFocusableInTouchMode(true); viewHolder.getCity().setSelected(true); viewHolder.getCity().setMarqueerPeatLimit(-1); //获取动态颜色 target=new com.squareup.picasso.target(){ @凌驾 公共无效onBitmapLoaded(最终位图,Picasso.LoadedFrom){ generateAsync(位图,新的Palette.PaletteSyncListener(){ 已生成的公共空心板(调色板){ if(调色板!=null){ viewHolder.getImageCover().setImageBitmap(位图); palete.Swatch vibrant=palete.getVibrantSwatch(); 如果(振动!=null){ viewHolder.getCardItemHome().setBackgroundColor(vibrant.getRgb()); viewHolder.getName().setTextColor(vibrant.getTitleTextColor()); viewHolder.getCity().setTextColor(vibrant.getTitleTextColor()); } } } }); } @凌驾 公共无效onBitmapFailed(Drawable errorDrawable){ viewHolder.getImageCover().setImageResource(R.drawable.cover); } @凌驾 准备加载时的公共无效(可提取占位符可提取){ } }; Log.d(TAG,mDataSource.get(position.get(“image_url”)); 毕加索(McContext) .load(mDataSource.get(position.get(“image\u url”)) .进入(目标); } @凌驾 public int getItemCount(){ 返回mDataSource.size(); } 公共静态类ViewHolder扩展了RecyclerView.ViewHolder{ 私人最终CardView cardItemHome; 私人最终图像视图imgCover; 私有最终文本视图txtName; 私人最终文本视图txtCity; 公共视图持有者(视图v){ 超级(五); v、 setOnClickListener(新视图。OnClickListener(){ @凌驾 公共void onClick(视图v){ d(标记“Element”+getPosition()+“clicked”); } }); cardItemHome=(CardView)v.findViewById(R.id.card\u item\u home); txtName=(TextView)v.findviewbyd(R.id.txt_name); txtCity=(TextView)v.findViewById(R.id.txt_city); imgCover=(ImageView)v.findViewById(R.id.img_封面); } public CardView getCardItemHome(){ 回家; } 公共文本视图getName(){ 返回txtName; } 公共文本视图getCity(){ 返回txtCity; } 公共图像视图getImageCover(){ 返回imgCover; } }
}

您的日志显示的图像URL是否正确?@Theo是的,它是正确的。我还设置了internet权限。目标是否为ImageView?我现在正在查看毕加索。它看起来非常简单。@Theo非常奇怪,当我尝试时,我只知道我的回收器视图中的一个项目显示了一个图像,下次尝试时,它就不见了。不,我但是你的日志显示了正确的图像URL吗?@Theo是的,它是正确的。我也有上网权限。目标是图像视图吗?我现在要看毕加索。它看起来很简单。@Theo真的很奇怪,当我尝试它时,我只知道我的回收器视图中的一个项目显示了一个图像,而下一个项目显示了一个图像我试过了,它不见了。但在其他项目的图片上没有运气。