简体   繁体   English

当我单击RecyclerView项时,我想获取ID

[英]I want to get the id when I click a RecyclerView item

when clicked the item of recycleview.i want to get the ID of the item of and use them in another Service in Main activity recycleview is working fine just want get id from adapter and use it to main activity here is my code of adapter and main Activity class in which show the 当单击recycleview.i的项目时,我想获取该项目的ID并在Main活动的另一个服务中使用它们,recycleview工作正常,只是想从适配器获取ID并将其用于主要活动,这是我的适配器和main的代码在其中显示

    private void loadrent() {
    l.setVisibility(View.GONE);

    shimmerLayout.setVisibility(View.VISIBLE);
    shimmerLayout.startShimmerAnimation();
    StringRequest stringRequest = new StringRequest(Request.Method.GET, 
                                         URLs.user_rent_data_guest,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        Integer a;
                        shimmerLayout.stopShimmerAnimation();
                        shimmerLayout.setVisibility(View.GONE);
                        //converting the string to json array object
                        JSONObject jsonResponse = new JSONObject(response);
                        JSONArray array =jsonResponse.getJSONArray("data");
                       // JSONArray arrays =jsonResponse.getJSONArray("0");
                        //traversing through all the object
                        if(array != null && array.length() > 0 ) {
                            l.setVisibility(View.INVISIBLE);
                            for (int i = 0; i < array.length(); i++) {
                                //getting product object from json array
                                JSONObject product =array.getJSONObject(i);
                      //JSONObject products =arrays.getJSONObject(i);
                                //adding the product to product lists
                                productList.add(new Rent(
                                        product.getInt("id"),
                                        product.getString("tags"),
                                        product.getString("address"),
                                        product.getString("details"),
                                        product.getString("amount"),
                                        product.getString("cover_image"),
                                        product.getString("location"),
                                        product.getString("contact"),
                                        product.getString("status"),
                                        product.getString("no_of_bedrooms"),
                                        product.getString("no_of_bathrooms"),
                                        product.getString("property_floor"),
                                        product.getString("created_at"),
                                        product.getString("property_name")
                                ));
                            }
                        }
                        else {
                            l.setVisibility(View.VISIBLE);
                            shimmerLayout.stopShimmerAnimation();
                            shimmerLayout.setVisibility(View.GONE);
                        }
                        //creating adapter object and setting it to recyclerview
                        adapter = new rentgestAdapter(SubmitPost.this,productList);
                        recyclerView.setAdapter(adapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    shimmerLayout.stopShimmerAnimation();
                    shimmerLayout.setVisibility(View.GONE);
                }
            });

    //adding our stringrequest to queue
    Volley.newRequestQueue(this).add(stringRequest);
}



public class rentgestAdapter extends 
RecyclerView.Adapter<rentgestAdapter.rentgestAdapterholder> {


private Context mCtx;
private List<Rent> productList;
private String time,s;
Date currentTimes;
Integer soft;
Date date1,date2;
Date today;

public rentgestAdapter(Context mCtx, List<Rent> productList) {
    this.mCtx = mCtx;
    this.productList = productList;
}

@Override
public rentgestAdapterholder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(mCtx);
    View view = inflater.inflate(R.layout.list_layout, null);
    return new rentgestAdapterholder(view);
}


@Override
public void onBindViewHolder(rentgestAdapterholder holder, int position) {
    final Rent product = productList.get(position);


    //loading the image
    //loading the image

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

     Integer s=product.getId();


        }
    });
    AssetManager am = mCtx.getApplicationContext().getAssets();
    Typeface face= Typeface.createFromAsset(am,"fonts/nobellights.ttf");
    Typeface face1= Typeface.createFromAsset(am,"fonts/NobelBold.ttf");
    holder.textViewamunt.setTypeface(face1);
    holder.name.setTypeface(face);
    holder.textViewtag.setTypeface(face);
    holder.bed.setTypeface(face);
    holder.bath.setTypeface(face);
    holder.floor.setTypeface(face);
    holder.textViewaddress.setTypeface(face);
    holder.textViewdetail.setTypeface(face);


    holder.textViewamunt.setText(String.valueOf(product.getPrice())+" PKR");
    holder.name.setText(product.getname());
    holder.textViewaddress.setText(String.valueOf(product.get_address()));
   // holder.textViewtag.setText(String.valueOf(product.get_sale_tag()));
    if(product.get_sale_tag().equals(""))
    {
        holder.textViewtag.setVisibility(View.INVISIBLE);
    }
    else{
        holder.textViewtag.setVisibility(View.VISIBLE);
        holder.textViewtag.setText(String.valueOf(product.get_sale_tag()));
    }
    holder.textViewdetail.setText(String.valueOf(product.getdetails()));
    if(product.getbed().equals(""))
    {
        holder.bed.setVisibility(View.INVISIBLE);

    }
    else{
        holder.bed.setVisibility(View.VISIBLE);
        holder.bed.setText(String.valueOf(product.getbed())+" Bed");

    }
    if(product.getBath().equals(""))
    {
        holder.bath.setVisibility(View.INVISIBLE);

    }
    else{
        holder.bath.setVisibility(View.VISIBLE);
        holder.bath.setText(String.valueOf(product.getBath())+" Bath");

    }
    if(product.getFloor().equals(""))
    {
        holder.floor.setVisibility(View.INVISIBLE);

    }
    else{
        holder.floor.setVisibility(View.VISIBLE);
        holder.floor.setText(String.valueOf(product.getFloor())+" Floor");

    }
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-M-dd hh:mm:ss");
    try {
        DateFormat dateFormatter = new SimpleDateFormat("yyyy-M-dd hh:mm:ss");
        dateFormatter.setLenient(false);
        today = new Date();
        s = dateFormatter.format(today);
        date1 = simpleDateFormat.parse(product.getcreated_at());
        date2 = simpleDateFormat.parse(s);
        printDifference(date1, date2);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    holder.t.setText(String.valueOf(time));
    holder.shineButton.setOnCheckStateChangeListener(new ShineButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(View view, boolean checked) {
            Log.e("ssssss", "click " + checked);
        }
    });
}

@Override
public int getItemCount() {
    return productList.size();
}
public String printDifference(Date startDate, Date endDate) {
    //milliseconds
    long different = endDate.getTime() - startDate.getTime();

    System.out.println("startDate : " + startDate);
    System.out.println("endDate : "+ endDate);


    long secondsInMilli = 1000;
    long minutesInMilli = secondsInMilli * 60;
    long hoursInMilli = minutesInMilli * 60;
    long daysInMilli = hoursInMilli * 24;

    long elapsedDays = different / daysInMilli;
    different = different % daysInMilli;

    long elapsedHours = different / hoursInMilli;
    different = different % hoursInMilli;

    long elapsedMinutes = different / minutesInMilli;
    different = different % minutesInMilli;

    long elapsedSeconds = different / secondsInMilli;

    System.out.printf(
            "%d days, %d hours, %d minutes, %d seconds%n",
            elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds);
    time= elapsedDays+" Days "+" "+elapsedHours+" Hours  "+" "+elapsedMinutes+" Minutes";
    return time;
}

class rentgestAdapterholder extends RecyclerView.ViewHolder {
   ShineButton shineButton ;

    TextView textViewamunt, textViewdetail, textViewaddress, textViewtag,bed,bath,floor,t,name;
    ImageView imageView;
    public android.support.v7.widget.CardView lsItem;



    public rentgestAdapterholder(View itemView) {
        super(itemView);
        shineButton= (ShineButton) itemView.findViewById(R.id.po_image2);
        textViewamunt = (TextView) itemView.findViewById(R.id.pkramount);
        name = (TextView) itemView.findViewById(R.id.name);
        textViewdetail =  (TextView)itemView.findViewById(R.id.detail);
        t =  (TextView)itemView.findViewById(R.id.t);
        bed = (TextView) itemView.findViewById(R.id.bed);
        bath = (TextView) itemView.findViewById(R.id.bath);
        floor = (TextView) itemView.findViewById(R.id.floor);
        textViewtag = (TextView) itemView.findViewById(R.id.tag);
        textViewaddress = (TextView) itemView.findViewById(R.id.address);
        imageView = (ImageView) itemView.findViewById(R.id.simage);
        lsItem = (android.support.v7.widget.CardView) itemView.findViewById(R.id.lsItem);

    }
}
}

First: You could create a interface for providing callback listener: 首先:您可以创建一个用于提供回调侦听器的接口:

interface UpdateActivityListener {
    void itemClicked(int id);
}

Second: Your adapter should keep listener, but activity should implements: 第二:您的适配器应保留侦听器,但活动应实现:

public rentgestAdapter(Context mCtx, List<Rent> productList, UpdateActivityListener listener) {
    this.mCtx = mCtx;
    this.productList = productList;
    this.listener = listener;
}

Third: Set to your view default setOnClickListener and call your listener with pass id. 第三:设置为视图默认的setOnClickListener并使用传递ID调用您的侦听器。

view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // holder.getAdapterPosition() returns click item position
        listener.itemClicked(holder.getAdapterPosition());
    }
});

暂无
暂无

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

相关问题 当我单击 RecyclerView 项目时,我希望 TextView 在同一活动中显示项目的标题 - When I click on RecyclerView Item I want the TextView in same activity to display Item's title 当我单击列表中的每个项目时,我需要获取项目的内容(图像和文本) - I need when I click in every item in the list I want to get the content of item (IMAGE AND TEXT) 单击 RecyclerView 后,当我想在新活动中显示详细信息时出现错误。 使用 Firebase - Get error when I want to display detail in new activity after click on RecyclerView. Using Firebase 当我在 RecyclerView 项目中单击时,片段加载数据错误数据 - Fragment loading data wrong data when I click in RecyclerView item 当我单击另一个recyclerview中的项目时如何显示回收者视图 - How to show recycler view when i click an item in another recyclerview 当我单击 recyclerView 中的项目时打开特定活动 - Open an specific activity when I click an item from an recyclerView 每当我想删除 RecyclerView 项目时出现 IndexOutOfBoundsException - IndexOutOfBoundsException whenever I want to delete an RecyclerView item 我将如何获得这个自动生成的 id 的值我希望它们显示在我的 recyclerview 中 - How will I be able to get the value of this auto generated id I want them to be displayed in my recyclerview 当我单击回收站视图中的项目时,我可以使用导航抽屉作为下拉菜单吗? - Can i use a navigation drawer as a dropdown menu when i click on an item in a recyclerview? RecyclerView在更改项目时单击 - RecyclerView click when item is changed
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM