Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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
如果我们只知道url而没有关于android中web服务的信息,则检索多个图像(如果可能的话,使用循环)_Android_Uiimageview_Url Routing - Fatal编程技术网

如果我们只知道url而没有关于android中web服务的信息,则检索多个图像(如果可能的话,使用循环)

如果我们只知道url而没有关于android中web服务的信息,则检索多个图像(如果可能的话,使用循环),android,uiimageview,url-routing,Android,Uiimageview,Url Routing,我有一个URL,上面有很多图片(至少3000张或更多)。所有的图片都像href。若我点击图片的标题,它就会打开。我想在我的项目中使用这些图像。我可以通过使用Picasso RecyclerView和Async类轻松地完成这项工作,前提是我有一个web服务 现在,只有我的URL,我不知道如何获取图像并进行循环或其他方式来收集下一张图像。我可以通过单击href并在string.xml或某些数组中复制粘贴所有URL,但我不想这样做,因为有100个图像,不值得这样做 如果我们没有JSON或xml,有人能

我有一个URL,上面有很多图片(至少3000张或更多)。所有的图片都像href。若我点击图片的标题,它就会打开。我想在我的项目中使用这些图像。我可以通过使用Picasso RecyclerView和Async类轻松地完成这项工作,前提是我有一个web服务

现在,只有我的URL,我不知道如何获取图像并进行循环或其他方式来收集下一张图像。我可以通过单击href并在string.xml或某些数组中复制粘贴所有URL,但我不想这样做,因为有100个图像,不值得这样做

如果我们没有JSON或xml,有人能告诉我如何从URL获取图像吗

已编辑

这是我的异步类

Context context;
private IAsyncTaskListener listener;
ProgressBar progressBar;

public ArrayList<String> linkArray = new ArrayList<>();
public HTMLAsync(Context context, IAsyncTaskListener listener, ProgressBar progressBar) {
    this.context = context;
    this.listener = listener;
   // dataArray.clear();
    this.progressBar = progressBar;
}

@Override
protected void onPreExecute(){
    progressBar.setVisibility(View.VISIBLE);
}
@Override
protected Boolean doInBackground(String... params) {

    File input = new File("/tmp/input.html");
    Document doc = null;
    try {
        doc = Jsoup.parse(input, "UTF-8", "http://mobileswall.com/wp-content/uploads/2013/09/");

    Element content = doc.getElementById("content");
    Elements links = content.getElementsByTag("a");
    for (Element link : links) {
        String linkHref = link.attr("href");
        linkArray.add(linkHref);
        String linkText = link.text();
    }} catch (IOException e) {
        e.printStackTrace();
        return false;

    }
    return true;
}



@Override
protected void onPostExecute(Boolean result) {
    if (result==true) {
        progressBar.setVisibility(View.VISIBLE);
        this.listener.onCompleted(linkArray);
    } else
        Toast.makeText(context,"Check your Internet Connection",Toast.LENGTH_LONG).show();

}
public interface IAsyncTaskListener {
    void onCompleted(List<String> linkArray);
}
}
语境;
私有IAsyncTaskListener侦听器;
ProgressBar ProgressBar;
public ArrayList linkArray=new ArrayList();
公共HTMLAsync(上下文上下文,IAsyncTaskListener侦听器,ProgressBar ProgressBar){
this.context=上下文;
this.listener=listener;
//dataArray.clear();
this.progressBar=progressBar;
}
@凌驾
受保护的void onPreExecute(){
progressBar.setVisibility(View.VISIBLE);
}
@凌驾
受保护的布尔doInBackground(字符串…参数){
文件输入=新文件(“/tmp/input.html”);
单据单据=空;
试一试{
doc=Jsoup.parse(输入,“UTF-8”http://mobileswall.com/wp-content/uploads/2013/09/");
元素内容=doc.getElementById(“内容”);
元素链接=content.getElementsByTag(“a”);
用于(元素链接:链接){
字符串linkHref=link.attr(“href”);
linkArray.add(linkHref);
字符串linkText=link.text();
}}捕获(IOE异常){
e、 printStackTrace();
返回false;
}
返回true;
}
@凌驾
受保护的void onPostExecute(布尔结果){
如果(结果==真){
progressBar.setVisibility(View.VISIBLE);
this.listener.onCompleted(linkArray);
}否则
Toast.makeText(上下文,“检查您的Internet连接”,Toast.LENGTH_LONG.show();
}
公共接口IAsyncTaskListener{
未完成的作废(列表链接数组);
}
}
这是我正在使用的适配器类

private LayoutInflater inflater;
Context context;
List<String> linkArray;
private int lastPosition = -1;

public RecyclerViewAdapter(Context context) {
    //this.dataArray = dataArray;
    this.context = context;
    inflater = LayoutInflater.from(context);
}

public void setDataArray(List<String> linkArray) {
    this.linkArray = linkArray;

}

@Override
public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.cardview, parent, false);
    CustomViewHolder holder = new CustomViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
    Picasso.with(context).load(linkArray.get(position)).into(holder.image);


}

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


public class CustomViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    ImageView image;

    public CustomViewHolder(View itemView) {
        super(itemView);
        image = (ImageView) itemView.findViewById(R.id.imageView);
    }

    @Override
    public void onClick(View v) {

    }
}


}
私人充气机;
语境;
列表链接数组;
private int lastPosition=-1;
公共RecycleServiceAdapter(上下文){
//this.dataArray=dataArray;
this.context=上下文;
充气器=充气器。从(上下文);
}
公共无效setDataArray(列表链接数组){
this.linkArray=linkArray;
}
@凌驾
公共CustomViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.cardview,父视图,false);
CustomViewHolder=新的CustomViewHolder(视图);
报税表持有人;
}
@凌驾
公共无效onBindViewHolder(CustomViewHolder,int位置){
毕加索.with(context).load(linkArray.get(position)).into(holder.image);
}
@凌驾
public int getItemCount(){
返回linkArray.size();
}
公共类CustomViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
图像视图图像;
公共CustomViewHolder(查看项目视图){
超级(项目视图);
image=(ImageView)itemView.findViewById(R.id.ImageView);
}
@凌驾
公共void onClick(视图v){
}
}
}
主要活动类别为:

RecyclerView recyclerView;
RecyclerViewAdapter recyclerViewAdapter;
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    new HTMLAsync(getApplicationContext(), this, progressBar).execute();

}

@Override
public void onCompleted(List<String> linkArray) {
    // Initializing the Recycler View and its layout
    recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
    recyclerView.setLayoutManager(layoutManager);
    recyclerViewAdapter = new RecyclerViewAdapter(MainActivity.this);
    recyclerViewAdapter.setDataArray(linkArray);
    recyclerView.setAdapter(recyclerViewAdapter);
    recyclerView.setHasFixedSize(true);
    recyclerViewAdapter.notifyDataSetChanged();
}
}
RecyclerView-RecyclerView;
RecycleWebAdapter RecycleWebAdapter;
ProgressBar ProgressBar;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
新的HTMLAsync(getApplicationContext(),this,progressBar).execute();
}
@凌驾
未完成公共无效(列表链接数组){
//初始化回收器视图及其布局
recyclerView=(recyclerView)findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager=新的LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
recyclerView.setLayoutManager(layoutManager);
RecycleServiceAdapter=新的RecycleServiceAdapter(MainActivity.this);
setDataArray(linkArray);
设置适配器(RecycleWebAdapter);
recyclerView.setHasFixedSize(true);
RecycleServiceAdapter.notifyDataSetChanged();
}
}
我已经在gradle文件中包括了Picasoo和JSoup库以及recyclerview和cardview支持库

这是我尝试执行此操作时生成的LOGCAT,我不知道真正的原因是什么

 E/lowmemorykiller: Kernel does not support memory pressure events or in-    kernel low memory killer
 04-02 02:05:46.746 963-963/? E/CameraService: setUpVendorTags: Vendor tag operations not fully defined. Ignoring definitions.
 04-02 02:05:46.856 1019-1019/? E/perfprofd: unable to open configuration file /data/data/com.google.android.gms/files/perfprofd.conf
 04-02 02:05:46.995 952-952/? E/SurfaceFlinger: hwcomposer module not found
 04-02 02:05:47.640 952-977/? E/SurfaceFlinger: ro.sf.lcd_density must be defined as a build property
 04-02 02:05:51.636 966-966/? E/memtrack: Couldn't load memtrack module (No such file or directory)
 04-02 02:05:51.636 966-966/? E/android.os.Debug: failed to load memtrack module: -2
 04-02 02:05:51.820 963-963/? E/audio_hw_generic: Error opening input stream format 1, channel_mask 0010, sample_rate 16000
 04-02 02:05:51.820 963-1284/? E/AudioFlinger: no wake lock to update!
 04-02 02:05:51.821 963-963/? E/AudioFlinger: int android::load_audio_interface(const char*, audio_hw_device_t**) couldn't load audio hw module audio.r_submix (No such file or directory)
 04-02 02:05:51.821 963-963/? E/SoundTriggerHwService: couldn't load sound trigger module sound_trigger.primary (No such file or directory)
 04-02 02:05:51.822 963-963/? E/RadioService: couldn't load radio module radio.primary (No such file or directory)
 04-02 02:05:51.858 959-959/? E/Netd: cannot find interface dummy0
 04-02 02:05:52.606 966-966/? E/Minikin: addFont failed to create font /system/fonts/NanumGothic.ttf
 04-02 02:05:52.606 966-966/? E/Minikin: addFont failed to create font /system/fonts/DroidSansFallback.ttf
 04-02 02:05:52.606 966-966/? E/Minikin: addFont failed to create font /system/fonts/MTLmr3m.ttf
 04-02 02:05:53.188 966-966/? E/EmojiFactory_jni: Failed to load libemoji.so: dlopen failed: library "libemoji.so" not found
 04-02 02:05:54.443 966-966/? E/Hyphenator: error loading hyphenation /system/usr/hyphen-data/hyph-en-us.pat.txt
 java.io.FileNotFoundException: /system/usr/hyphen-data/hyph-en-us.pat.txt: open failed: ENOENT (No such file or directory)
 at libcore.io.IoBridge.open(IoBridge.java:452)
 at libcore.io.IoUtils$FileReader.<init>(IoUtils.java:207)
 at libcore.io.IoUtils.readFileAsString(IoUtils.java:114)
 at android.text.Hyphenator.loadHyphenator(Hyphenator.java:96)
 at android.text.Hyphenator.init(Hyphenator.java:154)
 at com.android.internal.os.ZygoteInit.preloadTextResources(ZygoteInit.java:207)
 at com.android.internal.os.ZygoteInit.preload(ZygoteInit.java:186)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
 Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
 at libcore.io.Posix.open(Native Method)
 at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
 at libcore.io.IoBridge.open(IoBridge.java:438)
 at libcore.io.IoUtils$FileReader.<init>(IoUtils.java:207) 
 at libcore.io.IoUtils.readFileAsString(IoUtils.java:114) 
 at android.text.Hyphenator.loadHyphenator(Hyphenator.java:96) 
 at android.text.Hyphenator.init(Hyphenator.java:154) 
 at com.android.internal.os.ZygoteInit.preloadTextResources(ZygoteInit.java:207) 
 at com.android.internal.os.ZygoteInit.preload(ZygoteInit.java:186) 
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
E/lowmemorykiller:内核不支持内存压力事件或内核内存不足杀手
04-02 02:05:46.746 963-963/? E/CameraService:设置供应商标签:未完全定义供应商标签操作。忽略定义。
04-02 02:05:46.856 1019-1019/? E/perfprofd:无法打开配置文件/data/data/com.google.android.gms/files/perfprofd.conf
04-02 02:05:46.995 952-952/? E/SurfaceFlinger:未找到hwcomposer模块
04-02 02:05:47.640 952-977/? E/SurfaceFlinger:ro.sf.lcd\u密度必须定义为构建属性
04-02 02:05:51.636 966-966/? E/memtrack:无法加载memtrack模块(没有此类文件或目录)
04-02 02:05:51.636 966-966/? E/android.os.Debug:未能加载memtrack模块:-2
04-02 02:05:51.820 963-963/? E/音频硬件通用:打开输入流格式1、通道掩码0010、采样率16000时出错
04-02 02:05:51.820 963-1284/? E/AudioFlinger:无需更新唤醒锁!
04-02 02:05:51.821 963-963/? E/AudioFlinger:int android::load_audio_interface(常量字符*,audio_硬件设备**)无法加载audio硬件模块audio.r_submix(无此类文件或目录)
04-02 02:05:51.821 963-963/? E/SoundTriggerHwService:无法加载声音触发模块sound_trigger.primary(没有此类文件或目录)
04-02 02:05
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}