如何获取Wordpress发布图片链接以在Android应用程序上显示

如何解决如何获取Wordpress发布图片链接以在Android应用程序上显示

我正在学习android应用程序,并查看了许多YouTube教程,以将wordpress post实现到android应用程序中,并找到了一些步骤和资源。

我执行以下步骤:

  1. 使用REST APi获取博客帖子。它将是一个JSON数组。
  2. 检查每个json对象,每个对象都有这个JSON对象-链接-> WpFeaturedmedia ---> object(0)-> Href
  3. 此Href是博客文章的图像索引。
  4. 将此href传递给适配器。
  5. 内部适配器类再次对此href网址使用另一个改造调用
  6. 此改型的响应将包含博客文章的所有图像(多种尺寸)。 response.body()。getMediaDetails()。getSizes()。getThumbnail()。getSourceUrl()
  7. 将其传递给glide方法(仅在adpater类内部)Glide.with(mContext).load(response.body()。getMediaDetails()。getSizes()。getThumbnail()。getSourceUrl()).into(imageView) ;
  8. 为图像网址创建另一个POJO。

但是,我被困在 getImageRetrofit 上。在检查目录显示节目时,图像正在检索图像链接,但无法通过图像链接。有人可以指导我或帮助我获取图像链接或完成以下代码吗?


package np.com.wp_restapi;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;

import com.bumptech.glide.Glide;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class NewsNotice1_Activity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private ProgressBar progressBar;
    private LinearLayoutManager mLayoutManager;
    private ArrayList<Model> list;
    private RecyclerViewAdapter adapter;

    private String baseURL = "http:////example.com/";

    public static List<WPPost> mListPost;
    private static Retrofit retrofit = null;
    private static String ImageHref=null;

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

        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        progressBar = (ProgressBar) findViewById(R.id.progressbar);

        mLayoutManager = new LinearLayoutManager(NewsNotice1_Activity.this,LinearLayoutManager.VERTICAL,false);
        recyclerView.setLayoutManager(mLayoutManager);

        list = new ArrayList<Model>();

        progressBar.setVisibility(View.VISIBLE);
        if (mListPost != null) {
            /// call retrofill
            getRetrofit();
        } else {

            progressBar.setVisibility(View.GONE);
        }

        adapter = new RecyclerViewAdapter(list,NewsNotice1_Activity.this);

        recyclerView.setAdapter(adapter);
    }

    public void getRetrofit() {
        Log.d(TAG,"i am inside_200");

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(baseURL)
                .client(okHttpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        RetrofitArrayApi service = retrofit.create(RetrofitArrayApi.class);
        Call<List<WPPost>> call = service.getPostInfo();

        call.enqueue(new Callback<List<WPPost>>() {
            @Override
            public void onResponse(Call<List<WPPost>> call,Response<List<WPPost>> response) {
                try {
                    Log.e("NewsNotice_Activity"," response123 " + response.body());
                    mListPost = response.body();
                    progressBar.setVisibility(View.GONE);

                    for (int i = 0; i < response.body().size(); i++) {
                        String tempImageHref = response.body().get(i).getFeaturedMedia().toString();
                        Log.e("Href","onResponse: " + tempImageHref);

                        getImageRetrofit(tempImageHref,ImageHref);

                        Log.e("main "," title " + response.body().get(i).getTitle().getRendered() + " " +
                                response.body().get(i).getId());

                        String tempdetails = response.body().get(i).getExcerpt().getRendered().toString();

                        String tempDate = response.body().get(i).getDate();
                        tempDate = tempDate.replace("T"," ");

                        tempdetails = tempdetails.replace("<p>","");
                        tempdetails = tempdetails.replace("</p>","");
                        tempdetails = tempdetails.replace("[&hellip;]","");


                        list.add(new Model(Model.IMAGE_TYPE,tempDate,response.body().get(i).getTitle().getRendered(),tempdetails,ImageHref
                                
                        )); 
                    }

                } finally {
                    System.out.println("finally");

                }
                adapter.notifyDataSetChanged();

            }

            @Override
            public void onFailure(Call<List<WPPost>> call,Throwable t) {
                t.printStackTrace();
            }
        });
    }
    public interface RevealCourtPlaceCallbacks {
        void onSuccess(@NonNull String value);

        void onError(@NonNull Throwable throwable);
    }
//,@Nullable final RevealCourtPlaceCallbacks callbacks



    private void getImageRetrofit(final String tempImageHref,final String ImageHref) {
        Log.e("getImageRetrofit","called " + tempImageHref);

           retrofit = new Retrofit.Builder()
                   .baseUrl(baseURL)
                   .addConverterFactory(GsonConverterFactory.create())
                   .build();
   

        RetrofitArrayApi service1 = retrofit.create(RetrofitArrayApi.class);
        Call<WPPostImage> callImage = service1.getImageInfo(tempImageHref);

        callImage.enqueue(new Callback<WPPostImage>() {


            @Override
            public void onResponse(Call<WPPostImage> call,Response<WPPostImage> response) {
               Log.e("ImageInfo1","info1: "+response.body().getMediaDetails().getSizes().getThumbnail().getSourceUrl());
               
              
            }

            @Override
            public void onFailure(Call<WPPostImage> call,Throwable t) {
                //Log.e("Link Failed: ",": t.printStackTrace()" );
                Log.e("Link Failed: ",t.getMessage());
                t.printStackTrace();
            }


        });
        return;
    }

    public static List<WPPost> getList() {
        return mListPost;
    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-