【发布时间】:2021-06-08 09:08:55
【问题描述】:
我是安卓新手。
边看开源边学习,但是对RecyclerView还是没有很好的理解。
我试过了,但最后我一整天都找不到想要的结果。
我想将GridView 更改为RecyclerView,但我需要帮助。
public class MainActivity extends AppCompatActivity {
GridView gridView;
List<Bitmap> list_image = new ArrayList<Bitmap>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url = "https://www.pinterest.co.kr/offsong/wallpaper_black/";
try {
getListImageFromWeb(url);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
protected void getListImageFromWeb(String url) throws InterruptedException {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Document document = (Document) Jsoup.connect(url).get();
Elements images = document.select("img");
System.out.println("image size:" + images.size());
for (Element image : images){
Bitmap bmget = getBitmapFromSrc(image.attr("src"));
if (bmget != null){
list_image.add(bmget);
}
}
System.out.println("gengerate list image complete");
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
thread.join();
ShowImage();
}
protected Bitmap getBitmapFromSrc(String src){
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream inputStream = connection.getInputStream();
Bitmap mybitmap = BitmapFactory.decodeStream(inputStream);
return mybitmap;
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
// this function show some images in to screen
protected void ShowImage(){
gridView = findViewById(R.id.gridView);
CustomAdapter customAdapter = new CustomAdapter();
gridView.setAdapter(customAdapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(getApplicationContext(), ImageDetail.class);
intent.putExtra("image", list_image.get(i));
startActivity(intent);
}
});
}
private class CustomAdapter extends BaseAdapter {
@Override
public int getCount() {
return list_image.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View view1 = getLayoutInflater().inflate(R.layout.image_view, null);
ImageView image = view1.findViewById(R.id.image_view);
image.setImageBitmap(list_image.get(i));
return view1;
}
}
}
提前致谢! 你会对我有很大的帮助。
【问题讨论】:
-
这里有一个tutorial 可以帮助你。它易于理解和解释清楚,如果您仍有不明白的地方,请告诉我们。
-
“我找不到想要的结果”是什么意思?你有什么错误信息?实际结果和预期结果有什么区别?
标签: java android android-recyclerview gridview