изменить фотографию внутри listView - PullRequest
0 голосов
/ 16 марта 2020

Я создал listView, отображающий 3 фотографии, и при нажатии на одну из фотографий отображается меню с вариантами выбора. Проблема заключается в том, что при съемке фотокамерой или выборе из галереи фотография не отображается на фотографии, на которую щелкнули. когда я попытался выбрать «Удалить», это было правильно изменить фотографию.

Здравствуйте, я сделал listView отображает 3 фотографии, и когда одна из фотографий нажимается, он показывает меню с выбором, проблема в том, что при съемке фотография с камеры или выбор из галереи фотография не отображается на фотографии, на которую щелкнули. когда я попробовал выбрать «Удалить», это было правильное изменение фотографии.

public class MainActivity extends AppCompatActivity {
    int [] img = {
            R.drawable.ct,
            R.drawable.ct,
            R.drawable.ct,
            R.drawable.ct,
            R.drawable.ct,
            R.drawable.ct,
            R.drawable.ct,
            R.drawable.ct,
            R.drawable.ct,
            R.drawable.ct,
            R.drawable.ct
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);


        ListView list = (ListView) findViewById(R.id.list_view);
        String [] cashierposition = getResources().getStringArray(R.array.cashierposition);
        ArrayList<listview> cashiersList = new ArrayList<listview>();

        for (int i = 0 ; i < cashierposition.length ; i++){
            cashiersList.add(new listview(cashierposition[i],img[i],img[i],img[i]));
        }
        ListAdapter ad = new ListAdapter(cashiersList);
        list.setAdapter(ad);
    }

    class ListAdapter extends BaseAdapter {
        ArrayList<listview> listview = new ArrayList<listview>();
        Context context;

        ListAdapter(ArrayList<listview> listview) {
            this.listview = listview;
        }


        @Override
        public int getCount() {
            return listview.size();
        }

        @Override
        public Object getItem(int position) {
            return listview.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = getLayoutInflater();
            View view = inflater.inflate(R.layout.cashier_position, parent, false);

            TextView cashierposition = (TextView) view.findViewById(R.id.cashier_number);
            final ImageView imageleft = (ImageView) view.findViewById(R.id.cashier_left);
            ImageView imageend = (ImageView) view.findViewById(R.id.cashier_end);
            ImageView imageright = (ImageView) view.findViewById(R.id.cashier_right);

            cashierposition.setText(listview.get(position).cp);
            imageleft.setImageResource(listview.get(position).img1);
            imageend.setImageResource(listview.get(position).img2);
            imageright.setImageResource(listview.get(position).img3);

            final int i = position + 1;


            imageleft.setOnClickListener(new View.OnClickListener() {
                int REQUEST_IMAGE_CAPTURE = 0;

                public boolean onCreateOptionsMenu(Menu menu) {
                    getMenuInflater().inflate(android.R.menu.class.getModifiers(), menu);
                    return true;
                }
                @Override
                public void onClick(View v) {

                    final CharSequence[] options = { "Preview", "Take Photo", "Choose from Gallery", "Delete", "Cancel" };
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle("Add Photo!");
                    builder.setItems(options, new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int item) {
                            if (options[item].equals("Take Photo")) {
                                if (checkSelfPermission(Manifest.permission.CAMERA)== PackageManager.PERMISSION_GRANTED){
                                    REQUEST_IMAGE_CAPTURE ++;
                                    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                    startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
                              } else {
                                    if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
                                        Toast.makeText(MainActivity.this, "Camera permission was not accepted", Toast.LENGTH_SHORT).show();
                                    }
                                requestPermissions(new String[]{Manifest.permission.CAMERA},REQUEST_IMAGE_CAPTURE);
                                }

                            } else if (options[item].equals("Choose from Gallery")) {
                                REQUEST_IMAGE_CAPTURE ++;
                                Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                                intent.setType("image/");
                                startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);

                            } else if (options[item].equals("Preview")) {
                                Intent intent = new Intent(Intent.ACTION_VIEW);
                                intent.setType("image/*");
                                startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);

                            } else if (options[item].equals("Delete")) {
                                imageleft.setImageResource(R.drawable.ct);

                            } else if (options[item].equals("Cancel")) {
                                dialog.dismiss();
                            }

                        }
                    });
                    builder.show();

                        }
                public void onActivityResult (int requestCode, int resultCode, Intent data){

                    MainActivity.super.onActivityResult(requestCode, resultCode, data);
                    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
                        Bundle extras = data.getExtras();
                        Bitmap imageBitmap = (Bitmap) extras.get("data");
                        imageleft.setImageBitmap(imageBitmap);
                    }
                }
                    });
}
...