मैं आइटम आईडी कैसे प्राप्त कर सकता हूं [डुप्लिकेट]

Dec 21 2020

मैं अपनी परियोजना पर recyclerview है। मुझे आइटम आई डी चाहिए। मैं आइटम आईडी कैसे प्राप्त कर सकता हूं? । मैंने आइटम टचहेलर का उपयोग किया और मुझे विशेष आइटम आईडी की आवश्यकता है। मैं विशेष आइटम आईडी कैसे प्राप्त कर सकता हूं।

सक्रियता। जावा

public class todoactivity extends AppCompatActivity    {
    TextView title;
    Button back;
    ImageButton gorevo;
    RecyclerView recyclerView;
    List<String>Listsx = new ArrayList<>();
    TodoActivityAdpter adapterx;
    DatabaseHelper4 myDBxxx;
    TextView textView;
    CheckBox checkBox;
    long id;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_todoactivity);
        recyclerView=findViewById(R.id.recyclerviewxx);
        recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
        adapterx=new TodoActivityAdpter(Listsx);
        recyclerView.setAdapter(adapterx);
        title=findViewById(R.id.titlex);
        textView=findViewById(R.id.text_viewx);
        gorevo = findViewById(R.id.gorevo);

        myDBxxx = new DatabaseHelper4(this);

        Cursor datax = myDBxxx.getListContents();
        if(datax.getCount() == 0){

        }else{
            while(datax.moveToNext()){
                Listsx.add(datax.getString(1));

                ListAdapter listAdapterx = new ArrayAdapter<>(this,R.layout.todoactivity_item,R.id.textitem,Listsx);
                adapterx.notifyItemInserted(Listsx.size()-1);
            }
        }


        gorevo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(todoactivity.this);
                bottomSheetDialog.setContentView(R.layout.bottomsheetlayout3);
                bottomSheetDialog.show();
                InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
                EditText editText = bottomSheetDialog.findViewById(R.id.editx);
                Button ekle = bottomSheetDialog.findViewById(R.id.ekle);
                ekle.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        String text = editText.getText().toString();
                        Listsx.add(text);
                        AddDataxxx(text);
                        adapterx.notifyItemInserted(Listsx.size()-1);
                        bottomSheetDialog.hide();
                        inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(),0);
                    }
                });

            }
        });
        back=findViewById(R.id.back);
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(todoactivity.this, pomodoroscreen.class);
                startActivity(i);
                overridePendingTransition(0,0);
            }
        });



        ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT) {
            @Override
            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
                return false;
            }

            @Override
            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {

                int positionx = viewHolder.getAdapterPosition();
                Listsx.remove(positionx);
                adapterx.notifyItemRemoved(positionx);
                myDBxxx.deleteItem(// I want get id in there);
                

}
};
       
        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
     
        itemTouchHelper.attachToRecyclerView(recyclerView);
        
    }

    public void AddDataxxx(String newEntry) {

        boolean insertDatax = myDBxxx.addDataxxx(newEntry);
    }


}

MyAdapter.java

public class TodoActivityAdpter extends RecyclerView.Adapter<TodoActivityAdpter.Holder> {



    List<String>Listsx;
    public TodoActivityAdpter(List<String>itemxxx){
        this.Listsx = itemxxx;
    }
    @NonNull
    @Override
    public TodoActivityAdpter.Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.todoactivity_item,parent,false);
        Holder holder = new Holder(view);
        return holder;
    }
    @Override
    public void onBindViewHolder(@NonNull TodoActivityAdpter.Holder holder, int position) {
        holder.textView.setText(Listsx.get(position));


        holder.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.checkBox.isChecked()) {


                    holder.textView.setTextColor(view.getResources().getColor(R.color.grey));
                } else {
                    holder.textView.setTextColor(view.getResources().getColor(R.color.Color_black));
                }
            }
        });
    }
    @Override
    public int getItemCount() {
        return Listsx.size();
    }

    public class Holder extends RecyclerView.ViewHolder {

        CheckBox checkBox;
        TextView textView;

        List<String>Listsx;
        RecyclerView recyclerView;
        Context mContext;
        public Holder(View view) {
            super(view);

            textView=view.findViewById(R.id.text_viewx);
            checkBox=view.findViewById(R.id.checkbox);
            recyclerView=view.findViewById(R.id.recyclerviewxx);



        }
    }
   
}

मैं सक्रियता में आइटम आईडी प्राप्त करना चाहता हूं। मैं आइटम आईडी कैसे प्राप्त कर सकता हूं क्या आप तेज हो सकते हैं? मेरे actvity है activity.java । मेरा एडॉप्टर MyAdapter.java है

जवाब

ATP Dec 21 2020 at 16:23
int positionx = viewHolder.getAdapterPosition();
int id = recyclerView.getChildAt(position).getId();
Listsx.remove(positionx);
adapterx.notifyItemRemoved(positionx);
myDBxxx.deleteItem(id);

शायद

NadimAnsari Dec 21 2020 at 16:37

आपको एडॉप्टर ऑफ एक्टिविटी में प्रत्येक डेटा आइटम मिलेगा।

सबसे पहले नीचे की तरह एक विधि के साथ एक इंटरफ़ेस बनाएँ:

public interface OnClick {
public void clicked(View v, int position, int id);
}

इस इंटरफ़ेस को अपनी गतिविधि में लागू करें। पसंद :

public class YourActivity implement onClick{

}

जब आप अपनी गतिविधि में इंटरफ़ेस लागू करते हैं तो यह विधि से पूछेगा फिर अपनी गतिविधि में क्लिक की गई विधि जोड़ें।

अब इसे अपने एडॉप्टर में जोड़ें

 public TodoActivityAdpter(List<String>itemxxx,OnClick onClick){
    this.Listsx = itemxxx;
    this.onClick=onClick;
}

इस तरह से एडॉप्टर से इस ऑब्जेक्ट को पास करें:

adapterx=new TodoActivityAdpter(Listsx,this);

अब आपके क्लिक किए गए () में आपको एडॉप्टर का पास किया हुआ डेटा मिलेगा

लेकिन आप केवल एक स्ट्रिंग अपने एडेप्टर में पास कर रहे हैं ताकि यह केवल प्राप्त हो।