gpt4 book ai didi

java - 如何 Intent 通过滑动从互联网加载的图像

转载 作者:行者123 更新时间:2023-11-30 12:03:46 25 4
gpt4 key购买 nike

我有一个适配器可以将数组列表中的数据发送到我的布局。但是,我想从互联网上加载一些图像,所以我使用 glide (com.github.bumptech.glide:glide:4.9.0)。我的问题是我可以将通过滑行从主要 Activity 加载到另一个 Activity 的这个/这些图像 Intent 吗?

列表适配器:

public class ListTeamAdapter extends RecyclerView.Adapter<ListTeamAdapter.ListViewHolder> {

private ArrayList<Team> listTeam;

public ListTeamAdapter(ArrayList<Team> list){
this.listTeam = list;
}

@NonNull
@Override
public ListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_row_team, parent, false);
return new ListViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull final ListViewHolder holder, int position) {
final Team team = listTeam.get(position);
final Context context = holder.itemView.getContext();

Glide.with(context).load(team.getPhoto()).apply(new RequestOptions().override(55,55))
.into(holder.imgPhoto);

holder.tvName.setText(team.getName());
holder.tvDesc.setText(team.getDesc());

holder.btnList.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(View view) {

Toast.makeText(holder.itemView.getContext(),
listTeam.get(holder.getAdapterPosition()).getName(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra("extra_name", team.getName());
intent.putExtra("extra_desc", team.getDesc());
intent.putExtra("extra_history", team.getHistory());
intent.putExtra("extra_photo", team.getPhoto());
context.startActivity(intent);
}
});
}

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

class ListViewHolder extends RecyclerView.ViewHolder {
ImageView imgPhoto;
TextView tvName, tvDesc;
RelativeLayout btnList;
ListViewHolder(@NonNull View itemView) {
super(itemView);
btnList = itemView.findViewById(R.id.btn_item_list);
imgPhoto = itemView.findViewById(R.id.img_item_photo);
tvName = itemView.findViewById(R.id.tv_item_name);
tvDesc = itemView.findViewById(R.id.tv_item_desc);
}
}
}

主要 Activity :

public class MainActivity extends AppCompatActivity {

private RecyclerView rvTeams;
private ArrayList<Team> list = new ArrayList<>();

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

rvTeams = findViewById(R.id.rv_teams);
rvTeams.setHasFixedSize(true);

list.addAll(TeamsData.getListData());
showRecyclerList();
}
private void showRecyclerList(){
rvTeams.setLayoutManager(new LinearLayoutManager(this));
ListTeamAdapter listTeamAdapter = new ListTeamAdapter(list);
rvTeams.setAdapter(listTeamAdapter);
}
}

另一个会产生 Intent 的 Activity :

    public class DetailActivity extends AppCompatActivity {

public static final String EXTRA_NAME = "extra_name";
public static final String EXTRA_DESC = "extra_desc";
public static final String EXTRA_HISTORY = "extra_history";
public static final String EXTRA_PHOTO = "extra_photo";

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

TextView tvDataName = findViewById(R.id.tv_data_name);
TextView tvDataDesc = findViewById(R.id.tv_data_desc);
TextView tvDataHistory = findViewById(R.id.tv_data_history);
ImageView tvDataPhoto = findViewById(R.id.tv_data_photo);

String name = getIntent().getStringExtra(EXTRA_NAME);
String desc = getIntent().getStringExtra(EXTRA_DESC);
String history = getIntent().getStringExtra(EXTRA_HISTORY);
String photo = getIntent().getStringExtra(EXTRA_PHOTO);

tvDataName.setText(name);
tvDataDesc.setText(desc);
tvDataHistory.setText(history);
tvDataPhoto.setImageDrawable(photo);
}
}

我希望有人能提供帮助,因为我是 android 的新手。谢谢!

最佳答案

DetailActivity 中,您将照片 url 作为 ImageDrawable 传递给 imageView,这是错误的。将 url 传递给 Glide

Glide.with(this).load(photo).apply(new RequestOptions().override(55,55))
.into(tvDataPhoto);

To get the activity context

你可以通过 Adapter 的构造函数传递上下文,如下所示

private ArrayList<Team> listTeam;
private Context context;

public ListTeamAdapter(Context context, ArrayList<Team> list){
this.listTeam = list;
this.context = context;
}

然后在MainActivity

private void showRecyclerList(){
rvTeams.setLayoutManager(new LinearLayoutManager(this));
ListTeamAdapter listTeamAdapter = new ListTeamAdapter(MainActivity.this,list);
rvTeams.setAdapter(listTeamAdapter);
}

现在上下文在全局范围内可供您使用。

干杯:)

关于java - 如何 Intent 通过滑动从互联网加载的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57467025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com