我怎样才能获得物品ID

时间:2020-12-21 09:15:47

标签: java android

我的项目有 recyclerview。我想获取项目 id 。如何获取商品 ID? .我使用了 Item touchhelper 并且我需要特定的 item id 。我怎样才能获得特定的项目 ID。

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



        }
    }
   
}

我想在 Activty 中获取项目 ID。我怎样才能得到项目 id 。你能不能快点。我的活动是 activity.java 。我的适配器是 MyAdapter.java

2 个答案:

答案 0 :(得分:0)

import android.content.Context
import android.text.Editable
import android.text.TextWatcher
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.list_item_view.view.*

class CustomAdapter(private val data : DataClass, private val context : Context) :
    RecyclerView.Adapter<CustomAdapter.ViewHolder>() {

    init {
        setHasStableIds(true)
    }


    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {

        val rowItem: View = LayoutInflater.from(context).inflate(R.layout.list_item_view, parent, false)

        return ViewHolder(rowItem)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

        holder.itemView.tv1.setText(data.list3[position])

        holder.itemView.et1.setText(data.list1[position])
        holder.itemView.et2.setText(data.list2[position])

        holder.itemView.et1.addTextChangedListener(object : TextWatcher {

            override fun afterTextChanged(p0: Editable?) {
                data.list1[position]= holder.itemView.et1.text.toString()
                // activity.fonction()
            }
            override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
            }
            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
            }
        })
        holder.itemView.et2.addTextChangedListener(object : TextWatcher {

            override fun afterTextChanged(p0: Editable?) {
                data.list2[position] = holder.itemView.et2.text.toString()

                //this is instead of `fonction2()`
                holder.itemView.tv2.text = "?????"
                //fonction2()

                fonction3(position)
            }

            override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
            }

            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
            }
        })
    }

    override fun getItemId(position: Int): Long {
        return position.toLong()
    }

    override fun getItemCount(): Int {
        return data.list1.size
    }

    inner class ViewHolder(rowItem: View) : RecyclerView.ViewHolder(rowItem) {

    }

    fun fonction3(position: Int) {
        if (position in 1..98) {
            data.list3[position] = (0.5 * (data.list2[position - 1].toDouble() + data.list2[position + 1].toDouble())).toString()
            //activity.Update()
        }
    }
}

也许

答案 1 :(得分:0)

您将获得 Activity Adapter 中的每个数据项。

首先用一种方法创建一个接口,如下所示:

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

像这样从 Adapter 传递这个对象:

adapterx=new TodoActivityAdpter(Listsx,this);

现在在您的 clicked() 中您将获得适配器传递的数据

但是您只将一个字符串传递给您的适配器,因此只会得到这个。