PS:這是以前提出的問題的更新。在自定義相機佈局的水平視圖中設置圖像
我有一個自定義相機佈局,我需要圖像被設置爲水平和點擊時。我嘗試使用recyclerview。 首先,圖像被點擊被存儲在稱爲的位圖的結果中。
然後,我將圖像的路徑存儲在名爲路徑的變量中。路徑變量通過bundle傳遞給RecycleViewAdapter。
然後,使用onBindViewHolder,我試圖在水平視圖中顯示圖像。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
camera.setCameraListener(new CameraListener() {
@Override
public void onPictureTaken(byte[] picture) {
super.onPictureTaken(picture);
Bitmap result =
BitmapFactory.decodeByteArray(picture, 0, picture.length);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
result.compress(Bitmap.CompressFormat.JPEG, 25, bytes);
String path = MediaStore.Images.Media.insertImage(getApplicationContext().getContentResolver(), result, "Title", null);
horizontalList.add(path);
recycleViewAdapter = new RecycleViewAdapter(horizontalList);
horizontal_rv.setAdapter(recycleViewAdapter);
recycleViewAdapter.notifyDataSetChanged();
mBundle = new Bundle();
CameraActivity.mBundle.putString("abc", path);
horizontalList.add(path);
}
});
camera.captureImage();
}
});
然後傳遞給適配器類。
public class RecycleViewAdapter extends RecyclerView.Adapter<RecycleViewAdapter.MyViewHolder> {
Uri uri;
String path;
private List<Bitmap> horizontalList;
public class MyViewHolder extends RecyclerView.ViewHolder {
public ImageView image_result;
public MyViewHolder(View view) {
super(view);
image_result = (ImageView) view.findViewById(R.id.image_result);
}
}
public RecycleViewAdapter(ArrayList<Bitmap> horizontalList) {
this.horizontalList = horizontalList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recyclerview_item_row, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
path= CameraActivity.mBundle.getString("abc");
uri=Uri.parse(path);
holder.image_result.setImageURI(uri);
holder.image_result.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
@Override
public int getItemCount() {
return horizontalList.size();
}
}
問題: 當我點擊的圖像,在每個點擊2份在圖像中示出。而以前的觀點發生了變化,顯示了新的圖像,使計數加倍。 此外,該應用程序最多3次點擊後崩潰。
請幫助。
作爲謹慎的一句話,在適配器中保存位圖對象列表可能會很快給您一個OutOfMemoryException,請嘗試保留字符串引用或Uris。我也建議你使用畢加索或滑翔來做裝載,因爲它更容易使用。 –
你總是創建適配器的新實例,因此它只需要sibgle值(最新的一個) –
是的,我得到了那個錯誤。我正在考慮完成這項工作,然後轉向這個問題。不過謝謝。請詳細說明 – Harshita