簡體   English   中英

使用 Viewpager 顯示來自網絡的圖像但它沒有顯示給我,有人幫我解決這個問題

[英]Using Viewpager to display images from web but it is not showing me, Someone help me to solve this issue

我沒有任何錯誤,但我的數據仍然沒有顯示在 android 模擬器中,我在 mainactivity 中傳遞了它,但它仍然顯示空白屏幕,有人幫我解決這個問題。 我允許互聯網顯示圖像。 這是 androidx jetpack 問題,因為它在我身上發生了很多次,同時從網絡獲取信息。查看下面的代碼

主要活動

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private String[] imageUrls = {"https://picsum.photos/seed/picsum/200/300","https://picsum.photos/id/237/200/300"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.d(TAG, "onCreate: onCreate method executing");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ViewPager viewPager = findViewById(R.id.viewpager);
        ViewAdapter adapter = new ViewAdapter(this,imageUrls);
        viewPager.setAdapter(adapter);
    }
}

視圖適配器

public class ViewAdapter extends PagerAdapter {
    private static final String TAG = "ViewAdapter";
    private Context mContext;
    private String[] imageUrls;

    public ViewAdapter(Context context, String[] imageUrls) {
        mContext = context;
        this.imageUrls = imageUrls;
    }
    @Override
    public int getCount() {
        return imageUrls.length;
    }
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view==object;
    }
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        ImageView imageView = new ImageView(mContext);
        Picasso.get().load(imageUrls[position]).fit().centerCrop().into(imageView);
        Log.d(TAG, "instantiateItem: returning view");
        return imageView;
    }
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
      container.removeView((View) object);
    }
}

 Android manifest

 <uses-permission android:name="android.permission.INTERNET" />

謝謝!!

根本原因:您忘記將 imageView 添加到將顯示 imageView 的包含視圖中。

解決方案:將您的代碼更改為

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
    ImageView imageView = new ImageView(mContext);
    Picasso.get()
            .load(imageUrls[position])
            .fit()
            .centerCrop()
            .into(imageView);
    
    // Add this line
    container.addView(imageView);
    
    Log.d(TAG, "instantiateItem: returning view");
    return imageView;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM