온라인에서 json 파일의 항목을 표시하는 recyclerview가 있고, recyclerview에는 각 목록 항목의 축소판 이미지도 있습니다.네트워크에서 recyclerview의 다른 활동으로 이미지를 전달하는 방법
항목을 클릭하면 새로운 활동이 시작됩니다. 서버에서 가져온 미리보기 이미지를 새 활동으로 전달하려면 어떻게해야합니까? 내가 여기
public void onClick(View v) {
Intent intent = new Intent(context, ItemModal.class);
intent.putExtra("ItemName", textItemName.getText().toString());
intent.putExtra("ItemImage", ivItem.getId());
intent.putExtra("ItemDesc", textDesc.getText().toString());
intent.putExtra("ItemPrice", textPrice.getText().toString());
Toast.makeText(context, textDesc.getText().toString() , Toast.LENGTH_SHORT).show();
context.startActivity(intent);
}
: 여기
public class AdapterItems extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private LayoutInflater inflater;
List<DataItems> data= Collections.emptyList();
DataItems current;
int currentPos=0;
// create constructor to innitilize context and data sent from MainActivity
public AdapterItems(Context context, List<DataItems> data){
this.context=context;
inflater= LayoutInflater.from(context);
this.data=data;
}
// Inflate the layout when viewholder created
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=inflater.inflate(R.layout.container_items, parent,false);
MyHolder holder=new MyHolder(view);
return holder;
}
// Bind data
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
// Get current position of item in recyclerview to bind data and assign values from list
MyHolder myHolder= (MyHolder) holder;
DataItems current=data.get(position);
myHolder.textItemName.setText(current.itemName);
myHolder.textDesc.setText(current.itemDesc);
myHolder.textPrice.setText("# " + current.price);
myHolder.textPrice.setTextColor(ContextCompat.getColor(context, R.color.colorAccent));
// load image into imageview using glide
Glide.with(context).load(current.itemImage)
.placeholder(R.drawable.ic_img_error)
.error(R.drawable.ic_img_error)
.into(myHolder.ivItem);
}
// return total item from List
@Override
public int getItemCount() {
return data.size();
}
class MyHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView textItemName;
ImageView ivItem;
TextView textDesc;
TextView textPrice;
// create constructor to get widget reference
public MyHolder(View itemView) {
super(itemView);
textItemName = (TextView) itemView.findViewById(R.id.textItemName);
ivItem = (ImageView) itemView.findViewById(R.id.ivItem);
textDesc = (TextView) itemView.findViewById(R.id.textDesc);
textPrice = (TextView) itemView.findViewById(R.id.textPrice);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(context, ItemModal.class);
intent.putExtra("ItemName", textItemName.getText().toString());
intent.putExtra("ItemImage", ivItem.getId());
intent.putExtra("ItemDesc", textDesc.getText().toString());
intent.putExtra("ItemPrice", textPrice.getText().toString());
Toast.makeText(context, textDesc.getText().toString() , Toast.LENGTH_SHORT).show();
context.startActivity(intent);
}
}
}
새로운 활동을 시작하는 코드입니다 : 여기
public class ItemModal extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item_modal);
TextView ItemNameV = (TextView) findViewById(R.id.textView);
TextView ItemDescV = (TextView) findViewById(R.id.textView2);
TextView ItemPriceV = (TextView) findViewById(R.id.textView3);
ImageView ItemImageV = (ImageView) findViewById(R.id.imageView);
String itemName = getIntent().getStringExtra("ItemName");
String itemDesc = getIntent().getStringExtra("ItemDesc");
String itemPrice = getIntent().getStringExtra("ItemPrice");
String itemImage = getIntent().getStringExtra("ItemImage");
ItemNameV.setText(itemName);
ItemDescV.setText(itemDesc);
ItemPriceV.setText(itemPrice);
ItemImageV.setId(Integer.parseInt(itemImage));
}
}
는 어댑터 코드입니다 : 여기
내 새로운 활동 코드 그냥 이드의 이미지를 전달하는 데 도움이되지 않습니다.
네트워크 대신 캐시에서로드하려면 어떻게해야합니까? – theOzmic
글라이드가 이미 이것을했다고 생각합니다. 안드로이드 스튜디오에 연결된 앱을 실행하고 안드로이드 모니터 아래의 네트워크 그래프를보십시오. 액티비티를 열면 새로운 것이 전혀 다운로드되지 않습니다 –