Wie kann ich die Artikel-ID [doppelt] erhalten?

Dec 21 2020

Ich habe einen Überblick über mein Projekt. Ich möchte die Artikel-ID erhalten. Wie kann ich die Artikel-ID erhalten? . Ich habe Item Touchhelper verwendet und benötige eine bestimmte Item-ID. Wie kann ich eine bestimmte Artikel-ID erhalten?

Activty.java

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);



        }
    }
   
}

Ich möchte die Artikel-ID in Activty erhalten. Wie kann ich die Artikel-ID erhalten? Kannst du schnell sein? Meine Aktivität ist activity.java . Mein Adapter ist MyAdapter.java

Antworten

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);

könnte sein

NadimAnsari Dec 21 2020 at 16:37

Sie erhalten jedes Datenelement im Adapter of Activity.

Erstellen Sie zunächst eine Schnittstelle mit einer Methode wie folgt:

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

Implementieren Sie diese Schnittstelle in Ihrer Aktivität. mögen :

public class YourActivity implement onClick{

}

Wenn Sie eine Schnittstelle in Ihrer Aktivität implementieren, werden Sie nach der Methode gefragt und fügen Ihrer Aktivität dann die angeklickte Methode hinzu.

Fügen Sie dies nun in Ihren Adapter ein

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

Übergeben Sie dieses Objekt vom Adapter wie folgt:

adapterx=new TodoActivityAdpter(Listsx,this);

Jetzt erhalten Sie in Ihrem clicked () die übergebenen Daten des Adapters

Sie übergeben jedoch nur einen String an Ihren Adapter, sodass Sie nur diesen erhalten.