Как сохранить фотографию, снятую с камеры на RecyclerView

Чтобы ответить на вопрос, используйте один из них с надстрочным индексом и индексом. Пример:

sup {
    font-size: 75%;
    height: 0;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
    bottom: 1ex;
}
-1
задан Chmoro 6 March 2019 в 09:47
поделиться

1 ответ

Привет, следуй пошаговому руководству. Я понимаю вашу проблему, поэтому, пожалуйста, следуйте этому, если вам требуется простой код камеры, нажмите здесь

Шаг 1. Создайте DemoModel.java

import android.graphics.Bitmap;
import android.net.Uri;

public class DemoModel {
private String imagename = "";
private Bitmap imageBitmap= null;

public String getImagename() {
    return imagename;
}

public void setImagename(String imagename) {
    this.imagename = imagename;
}

public Bitmap getImageBitmap() {
    return imageBitmap;
}

public void setImageBitmap(Bitmap imageBitmap) {
    this.imageBitmap = imageBitmap;
}
}

Шаг 2: Создать row_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<ImageView
    android:id="@+id/ivImage"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@mipmap/ic_launcher_round" />

<TextView
    android:id="@+id/tvText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"
    android:layout_gravity="center_vertical"
    android:gravity="center_vertical" />
</LinearLayout>

Шаг 3: Создать DemoAdapter.java

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

public class DemoAdapter extends RecyclerView.Adapter<DemoAdapter.ViewHolder> 
{
private String TAG = "GroupAdapter";
private Context mContext;
private LayoutInflater infalter;
private ArrayList<DemoModel> mDemoModelArrayList = new ArrayList<DemoModel>();
private View.OnClickListener mItemClickListener;

public DemoAdapter(Context context, View.OnClickListener itemClickListener, ArrayList<DemoModel> demoModelArrayList) {

    this.infalter = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    this.mContext = context;

    this.mDemoModelArrayList = demoModelArrayList;
    this.mItemClickListener = itemClickListener;

}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.row_item, parent, false);
    ViewHolder viewHolder = new ViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(DemoAdapter.ViewHolder holder, int position) {


    holder.tvText.setText(mDemoModelArrayList.get(position).getImagename());
    holder.ivImage.setImageBitmap(mDemoModelArrayList.get(position).getImageBitmap());

    holder.ivImage.setTag(position);
    holder.ivImage.setOnClickListener(mItemClickListener);
}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    private TextView tvText;
    private ImageView ivImage;

    public ViewHolder(View itemView) {
        super(itemView);

        tvText = (TextView) itemView.findViewById(R.id.tvText);
        ivImage = (ImageView)itemView.findViewById(R.id.ivImage);

    }
}
}

Шаг 4: Напишите этот код в нашем MainActivity.java

import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

private RecyclerView rvrecylerView;
private DemoAdapter mDemoAdapter;
private ArrayList<DemoModel> mDemoModelArrayList = new ArrayList<DemoModel>();
int positionGl =0;

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

    setDummyData();

    rvrecylerView = (RecyclerView)findViewById(R.id.rvrecylerView);

    LinearLayoutManager mLinearLayout = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false);
    mLinearLayout.setSmoothScrollbarEnabled(true);
    rvrecylerView.setLayoutManager(mLinearLayout);
    rvrecylerView.setItemAnimator(new DefaultItemAnimator());
    mDemoAdapter = new DemoAdapter(MainActivity.this,mItemClickListener,mDemoModelArrayList);
    rvrecylerView.setAdapter(mDemoAdapter);
}

private void setDummyData() {
    for (int i = 0; i < 50; i++) {
        DemoModel tempDemoModel = new DemoModel();
        tempDemoModel.setImagename("MyName "+i);
        mDemoModelArrayList.add(tempDemoModel);
    }
}
private View.OnClickListener mItemClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int position =  (int)v.getTag();
        positionGl = position;
        openCamera(position);
    }
};

private void openCamera(int postion) {
    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(cameraIntent, 502);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 502 && resultCode == RESULT_OK && data != null) {
        Bitmap mphoto = (Bitmap) data.getExtras().get("data");
        mDemoModelArrayList.get(positionGl).setImageBitmap(mphoto);
        mDemoAdapter.notifyDataSetChanged();
    }
}
0
ответ дан Hitesh Tarbundiya 6 March 2019 в 09:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: