繁体   English   中英

如何在我的适配器类中编辑我的 recyclerview 图像?

[英]How to edit my recyclerview image in my adapter class?

我想使用Adapter类编辑我的RecyclerView内容。 我可以使用适配器位置编辑RecyclerView所有值。 除了图片上传,我什么都做了。 我可以浏览图像,但从未使用过onActivityResult 这是一个工作代码。 从活动类复制粘贴。

public class AlbumsAdapter extends RecyclerView.Adapter<AlbumsAdapter.MyViewHolder> {

    private Context mContext;
    List<Anime> mData;
    List<Anime> contactListFiltered;
    RequestOptions option;
    private List<ChatUser> mUsersList;
    CustomFiterAds fiterAds;
    private RequestQueue requestQueue ;
    String JSON_URL;
    String RemoveCategory;
    String editCategory;


    Spinner spin_category,spin_sub_category,spin_product_for,spin_product_typ,condition,negotiable,city,ad_age;
    ArrayList<String> arrayList_categry;
    private ArrayList<Model> modelList;
    String JsonURL;
     private static String sub_category;

    LinearLayout lin_product,lin_category;
    private ImageView imageView1;
    private static final int SELECT_PICTURE = 100;
    private Bitmap bitmap1;
    private int  CAMERA = 1;
    Uri selectedImageUri;

    public AlbumsAdapter(Context mContext, List<Anime> mData,List<ChatUser> mUsersList) {
        this.mContext = mContext;
        this.mData = mData;
        this.contactListFiltered = mData;
        this.mUsersList=mUsersList;
        // Request option for Glide
        option = new RequestOptions().centerCrop().placeholder(R.drawable.loading_shape).error(R.drawable.loading_shape);
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView title, count,desc;
        public ImageView thumbnail, overflow,delete,edit;

        public MyViewHolder(View view) {
            super(view);
            title = (TextView) view.findViewById(R.id.title);
            count = (TextView) view.findViewById(R.id.count);
            desc = (TextView) view.findViewById(R.id.desc);
            thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
            overflow = (ImageView) view.findViewById(R.id.overflow);
           delete=view.findViewById(R.id.deletepost);
           edit=view.findViewById(R.id.editpost);
        }
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.myadlist, parent, false);

        return new MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {

        holder.title.setText(mData.get(position).getAd_title());

        holder.count.setText("AED "+mData.get(position).getAd_price());
        holder.desc.setText(mData.get(position).getAd_description());

        Glide.with(mContext).load(mData.get(position).getImage1()).apply(option).into(holder.thumbnail);
        holder.overflow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showPopupMenu(holder.overflow,position);
            }
        });

        holder.edit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                editCategory=mData.get(position).getId();

                editHeadline(position);
                notifyDataSetChanged();
            }
        });

       holder.delete.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               RemoveCategory=mData.get(position).getId();

               deletevolley();

               notifyItemRemoved(position);
               notifyDataSetChanged();
           }
       });
    }


    /**
     * Showing popup menu when tapping on 3 dots
     */
    private void showPopupMenu(View view,int position) {
        // inflate menu
        PopupMenu popup = new PopupMenu(mContext, view);
        MenuInflater inflater = popup.getMenuInflater();
        inflater.inflate(R.menu.menu_album, popup.getMenu());
        popup.setOnMenuItemClickListener(new MyMenuItemClickListener(position));
        popup.show();
    }

    /**
     * Click listener for popup menu items
     */
    class MyMenuItemClickListener implements PopupMenu.OnMenuItemClickListener {

        private int position;
        public MyMenuItemClickListener(int thisPosition) {
            this.position=thisPosition;
        }

        @Override
        public boolean onMenuItemClick(MenuItem menuItem) {
            switch (menuItem.getItemId()) {
                case R.id.action_delete:


                    RemoveCategory=mData.get(position).getId();

                    deletevolley();

                    notifyItemRemoved(position);
                    notifyDataSetChanged();

                    return true;
                case R.id.action_edit:

                    editCategory=mData.get(position).getId();

                    editHeadline(position);


                    return true;
                default:
            }
            return false;
        }
    }

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


    public void deletevolley() {

        JSON_URL="https://alot.ae/api/disable_ads.php";
        StringRequest stringRequest = new StringRequest(Request.Method.POST, JSON_URL,
                new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {

                        try {
                            JSONObject jsonObject = new JSONObject(response);


                            if (jsonObject.getInt("success") == 0) {

                                Toast.makeText(mContext, jsonObject.getString("message"), Toast.LENGTH_LONG).show();

                            }  else if (jsonObject.getInt("success") == 1) {

                                Toast.makeText(mContext, jsonObject.getString("message"), Toast.LENGTH_LONG).show();

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(mContext,"Check Internet connection", Toast.LENGTH_LONG).show();
            }
        }){
            @Override
            protected Map<String, String> getParams() {

                // Creating Map String Params.
                Map<String, String> params = new HashMap<String, String>();

                // Adding All values to Params.
                SharedPreferences prefs = mContext.getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);
                String userid = prefs.getString("userId", "");
                params.put("user_id",userid);
                params.put("id",RemoveCategory);

                return params;
            }
        };

        requestQueue = Volley.newRequestQueue(mContext);
        requestQueue.add(stringRequest) ;
    }

    private void editHeadline(final int position) {

        //Creating a LayoutInflater object for the dialog box
        LayoutInflater li = LayoutInflater.from(mContext);
        //Creating a view to get the dialog box
        View confirmDialog = li.inflate(R.layout.edit_my_ads, null);
        arrayList_categry=new ArrayList<>();

        modelList = new ArrayList<Model>();

        spin_category=confirmDialog.findViewById(R.id.editAdCatogoery);
        spin_sub_category=confirmDialog.findViewById(R.id.editAdSubCatogoery);

        spin_product_for=confirmDialog.findViewById(R.id.editAdproperty_for);
        spin_product_typ=confirmDialog.findViewById(R.id.editAdproperty_typ);
         condition=confirmDialog.findViewById(R.id.editAdCondition);

        negotiable=confirmDialog.findViewById(R.id.editAdNegotiable);
        city=confirmDialog.findViewById(R.id.editadLocation);
        ad_age=confirmDialog.findViewById(R.id.editAdage);

       imageView1=confirmDialog.findViewById(R.id.editadimageView);

        lin_product=confirmDialog.findViewById(R.id.editlin_layout_prdct);
        lin_category=confirmDialog.findViewById(R.id.editlay_sub);
        lin_product.setVisibility(View.GONE);
        lin_category.setVisibility(View.VISIBLE);

        spin_category.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                sub_category=spin_category.getItemAtPosition(spin_category.getSelectedItemPosition()).toString().trim();

                modelList.clear();


                if(sub_category.contentEquals("Properties"))
                {
                    saveinformation1();
                    lin_product.setVisibility(View.VISIBLE);
                    lin_category.setVisibility(View.GONE);
                }
                else
                {  saveinformation1();
                    lin_category.setVisibility(View.VISIBLE);
                    lin_product.setVisibility(View.GONE);
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                // DO Nothing here
            }
        });


        imageView1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showPictureDialog();
            }
        });


//
        Button buttonEdit = (Button) confirmDialog.findViewById(R.id.updateAdpostButton);

        final EditText editTextHeadline = (EditText) confirmDialog.findViewById(R.id.editAdTitle);
        editTextHeadline.setText(mData.get(position).getAd_title());


        final EditText editTextDes = (EditText) confirmDialog.findViewById(R.id.editAdDescription);
        editTextDes.setText(mData.get(position).getAd_description());


        final EditText editTextprice = (EditText) confirmDialog.findViewById(R.id.editAdPrice);
        editTextprice.setText(mData.get(position).getAd_price());


        final EditText editTextnumber = (EditText) confirmDialog.findViewById(R.id.editAdcontactpersonnumber);
        editTextnumber.setText(mData.get(position).getAd_usermobile());


        final EditText editTextname = (EditText) confirmDialog.findViewById(R.id.editAdcontactperson);
        editTextname.setText(mData.get(position).getAd_username());

        AlertDialog.Builder alert = new AlertDialog.Builder(mContext);

        //Adding our dialog box to the view of alert dialog
        alert.setView(confirmDialog);

        //Creating an alert dialog
        final AlertDialog alertDialog = alert.create();
        alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.BLUE  ));

        //Displaying the alert dialog
        alertDialog.show();


        buttonEdit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                final String headline = editTextHeadline.getText().toString().trim();
                final String des = editTextDes.getText().toString().trim();
                final String price = editTextprice.getText().toString().trim();
                final String number = editTextnumber.getText().toString().trim();
                final String name = editTextname.getText().toString().trim();
                final String category = spin_category.getSelectedItem().toString().trim();
                final String age = ad_age.getSelectedItem().toString().trim();
                final String cityname = city.getSelectedItem().toString().trim();
                final String negotiables = negotiable.getSelectedItem().toString().trim();
                final String conditions = condition.getSelectedItem().toString().trim();
                final String productfor = spin_product_for.getSelectedItem().toString().trim();
                final String producttype = spin_product_typ.getSelectedItem().toString().trim();

                Toast.makeText(mContext, "Updating...", Toast.LENGTH_SHORT).show();

                SharedPreferences prefs = mContext.getApplicationContext().getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);
                String userID = prefs.getString("userId","");

                    HashMap<String, String> hashMap = new HashMap<String, String>();
                    hashMap.put("user_id", userID);
                    hashMap.put("id", editCategory);
                    hashMap.put("ad_category", category);
                    hashMap.put("ad_sub_category", sub_category);
                    hashMap.put("property_type", producttype);
                    hashMap.put("property_to",productfor);
                    hashMap.put("ad_title", headline);
                    hashMap.put("ad_description", des);
                    hashMap.put("ad_condition", conditions);
                    hashMap.put("age", age);
                    hashMap.put("ad_price", price);
                    hashMap.put("negotiable", negotiables);
                    hashMap.put("ad_username", name);
                    hashMap.put("ad_usermobile", number);
                    hashMap.put("ad_city", cityname);


                    AndroidNetworking.post("https://alot.ae/api/edit_my_ads.php")
                            .addBodyParameter(hashMap)
                            .setTag("agredwe")
                            .setPriority(Priority.HIGH)
                            .build()
                            .getAsString(new StringRequestListener() {
                                @Override
                                public void onResponse(String response) {
                                    try {
                                        JSONObject jsonObject = new JSONObject(response);


                                        if (jsonObject.getInt("success") == 0)
                                        {

                                            Toast.makeText(mContext, jsonObject.getString("message"), Toast.LENGTH_LONG).show();

                                        }
                                        else if (jsonObject.getInt("success") == 1)
                                        {
                                            Toast.makeText(mContext, jsonObject.getString("message"), Toast.LENGTH_LONG).show();
                                             notifyDataSetChanged();


                                        }
                                        else

                                            Toast.makeText(mContext, jsonObject.getString("message"), Toast.LENGTH_LONG).show();
                                    }
                                    catch (JSONException e)
                                    {
                                        e.printStackTrace();
                                    }
                                }

                                @Override
                                public void onError(ANError anError) {
                                    Toast.makeText(mContext, "Couldnt update", Toast.LENGTH_SHORT).show();
                                    alertDialog.dismiss();
                                }
                            });
                }
        });
    }


    private void showPictureDialog(){
        android.support.v7.app.AlertDialog.Builder pictureDialog = new android.support.v7.app.AlertDialog.Builder(mContext);
        pictureDialog.setTitle("Select Action");
        String[] pictureDialogItems = {
                "Select photo from gallery",
                "Capture photo from camera" };
        pictureDialog.setItems(pictureDialogItems,
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        switch (which) {
                            case 0:
                                openImageChooser();
                                break;
                            case 1:
                                takePhotoFromCamera();
                                break;
                        }
                    }
                });
        pictureDialog.show();
    }

    private void takePhotoFromCamera() {
        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        ((Activity) mContext).startActivityForResult(Intent.createChooser(intent, "Take Picture"),CAMERA);
    }
   private  void openImageChooser() {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_PICK);
        ((Activity) mContext).startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_PICTURE);
        Log.d("Edit",);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (resultCode == RESULT_OK) {
            selectedImageUri = data.getData();


            if (null != selectedImageUri) {

            }
            if (requestCode == SELECT_PICTURE) {

                try {
                    bitmap1 = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), selectedImageUri);

                    imageView1.setImageBitmap(bitmap1);

                } catch (IOException e) {
                    e.printStackTrace();
                }

            } else if (requestCode == CAMERA) {
                try {
                    bitmap1 = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), selectedImageUri);

                    imageView1.setImageBitmap(bitmap1);

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    private void saveinformation1() {

        JsonURL="https://alot.ae/api/loadspinner.php?ad_category="+sub_category;
        JsonURL=JsonURL.replaceAll(" ","%20");
        StringRequest stringRequest = new StringRequest(Request.Method.GET,JsonURL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String ServerResponse) {

                        // Hiding the progress dialog after all task complete.
                        //   pDialog.dismiss();
                        if (ServerResponse != null) {
                            try {
                                JSONObject jsonObj = new JSONObject(ServerResponse);
                                if (jsonObj != null) {
                                    JSONArray categories = jsonObj
                                            .getJSONArray("modal");

                                    for (int i = 0; i < categories.length(); i++) {
                                        JSONObject catObj = (JSONObject) categories.get(i);
                                        Model cat = new Model(catObj.getString("sub_category"));
                                        modelList.add(cat);
                                    }
                                    populateSpinner();
                                }
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        } else {
                            Log.e("JSON Data", "Didn't receive any data from server!");
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {

                        // Hiding the progress dialog after all task complete.
                        //    pDialog.dismiss();

                        // Showing error message if something goes wrong.
                        Toast.makeText(mContext, "Check Internet connection", Toast.LENGTH_LONG).show();
                    }
                }) {
        };

        RequestQueue requestQueue = Volley.newRequestQueue(mContext);
        requestQueue.add(stringRequest);
    }

    private void populateSpinner() {
        List<String> lables = new ArrayList<String>();

        for (int i = 0; i < modelList.size(); i++) {
            lables.add(modelList.get(i).getSub_category());
        }

        // Creating adapter for spinner
        ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(mContext,
                android.R.layout.simple_spinner_item, lables);

        // Drop down layout style - list view with radio button
        spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // attaching data adapter to spinner
        spin_sub_category.setAdapter(spinnerAdapter);
    }
}

如您所问的示例,我刚刚使用了相机。 您可以在代码中使用。 不要忘记提供相机许可,因为我不会检查它。

主活动.java

final RecyclerView recyclerView = findViewById(R.id.list);
        List<String> name = new LinkedList<>();
        for(int i=0;i<200;i++){
            name.add("Index = "+i);
        }

        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(new RecyclerAdapter(name, new RecyclerAdapter.ImageHelper() {
            @Override
            public void onImageSelect(ImageView imagView) {
                recyclerImage = imagView;
                Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(takePicture, 0);//zero can be replaced with any action code
            }
        }));

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch(requestCode) {
            case 0:
                if(resultCode == RESULT_OK){
                    Bitmap bm = (Bitmap) data.getExtras().get("data");
                    recyclerImage.setImageBitmap(bm);
                }

                break;

        }
    }

RecyclerAdapter.java

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder>{

    private List<String> listId;
    private ImageHelper imageHelper;

    public RecyclerAdapter(List<String> listId,ImageHelper imageHelper) {
        this.listId = listId;
        this.imageHelper = imageHelper;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view= LayoutInflater.from(parent.getContext())
                .inflate(R.layout._layoutItem,parent,false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {
//        holder.img_brand.setImageResource(""+listId.get(position));
        holder.textView.setText(listId.get(position));

        holder.img_brand.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(imageHelper!=null)
                    imageHelper.onImageSelect(holder.img_brand);
            }
        });
    }

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

    public static class MyViewHolder extends RecyclerView.ViewHolder {

        public ImageView img_brand;
        public TextView textView;

        public MyViewHolder(View itemView) {
            super(itemView);
            img_brand=itemView.findViewById(R.id.imageView);
            textView=itemView.findViewById(R.id.text);
        }
    }

    public interface ImageHelper{
        void onImageSelect(ImageView imagView);
    }

}

_layoutItem.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="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:id="@+id/text"
        android:gravity="center"
        android:textSize="20sp"
        android:textColor="#000000"/>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:id="@+id/imageView"
        android:background="@color/colorAccent"
        android:scaleType="centerCrop"/>

</LinearLayout>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM