Java 个性化适配器,尝试获取每个元素';s id并显示它

Java 个性化适配器,尝试获取每个元素';s id并显示它,java,android,android-recyclerview,android-adapter,Java,Android,Android Recyclerview,Android Adapter,我目前正在使用个人适配器。 我每一个都有一些按钮。 一个要删除,一个要编辑,一个要添加到共享优先列表 但是,我不知道如何从元素中获取Id或特定属性,例如它的Id 换句话说,我尝试在单击其中一个按钮时获取要显示的ID(对象的属性),稍后,我将实现该功能。 但是,我不太明白从哪里获取元素,每个@Override在适配器中做什么,以及在哪里声明onClick函数 这是我的适配器,目前(用于测试的Toastare): 此外,以下是我的主要活动: package a.bogin.revmidter

我目前正在使用个人适配器。 我每一个都有一些按钮。 一个要删除,一个要编辑,一个要添加到共享优先列表

但是,我不知道如何从元素中获取Id或特定属性,例如它的Id

换句话说,我尝试在单击其中一个按钮时获取要显示的ID(对象的属性),稍后,我将实现该功能。 但是,我不太明白从哪里获取元素,每个
@Override
在适配器中做什么,以及在哪里声明
onClick
函数

这是我的适配器,目前(用于测试的Toastare):

此外,以下是我的主要活动:

    package a.bogin.revmidterm;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;

import java.util.ArrayList;

import a.bogin.revmidterm.Adapter.StringsAdapter;
import a.bogin.revmidterm.DB.DBManager;
import a.bogin.revmidterm.Models.StringInfos;

public class MainActivity extends AppCompatActivity {

    ArrayList<StringInfos> listOfAll;
    StringsAdapter strAdapter;
    RecyclerView.LayoutManager mLayoutManager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        mLayoutManager = new LinearLayoutManager(this);
        .setLayoutManager(mLayoutManager);


        RecyclerView myOwnRc = findViewById(R.id.rc);
        myOwnRc.addItemDecoration(new DividerItemDecoration(getApplicationContext(), DividerItemDecoration.VERTICAL));

        mLayoutManager = new LinearLayoutManager(this);
        myOwnRc.setLayoutManager(mLayoutManager);



        listOfAll = DBManager.getAllItems();
        strAdapter = new StringsAdapter(listOfAll);

        myOwnRc.setAdapter(strAdapter);
        myOwnRc.setLayoutManager(new LinearLayoutManager(this));

        myOwnRc.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int pos, long id){

            }
        });

    }



public void addStuff(View v){
    Intent addNew = new Intent(this, AddItem.class);
    startActivity(addNew);
}

@Override
    public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inf = getMenuInflater();
    inf.inflate(R.menu.itemsstuff, menu);
    return true;
}

@Override
    public boolean onOptionsItemSelected(MenuItem item){

        switch (item.getItemId()){
            case R.id.ea:
                deleteAll();
                return true;
            case R.id.pref:
                seePrefs();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }

}


public void seePrefs(){

}

public void deleteAll(){
        listOfAll.clear();
        finish();
        startActivity(getIntent());
}
}
包a.bogin.rev中期;
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.support.v7.widget.DividerItemDecoration;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入java.util.ArrayList;
导入a.bogin.revmidterm.Adapter.StringsAdapter;
导入a.bogin.revmidterm.DB.DBManager;
导入a.bogin.revmidterm.Models.StringInfos;
公共类MainActivity扩展了AppCompatActivity{
ArrayList listOfAll;
StringsAdapter-strAdapter;
RecyclerView.LayoutManager mllayoutmanager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLayoutManager=新的LinearLayoutManager(此);
.setLayoutManager(mLayoutManager);
RecyclerView myOwnRc=findViewById(R.id.rc);
添加装饰(新的DividerItemDecoration(getApplicationContext(),DividerItemDecoration.VERTICAL));
mLayoutManager=新的LinearLayoutManager(此);
myOwnRc.setLayoutManager(mLayoutManager);
listOfAll=DBManager.getAllItems();
strAdapter=新StringsAdapter(列表所有);
myOwnRc.setAdapter(斯特拉达普特);
myOwnRc.setLayoutManager(新的LinearLayoutManager(本));
myOwnRc.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整数位置、长id){
}
});
}
公共void addStuff(视图五){
Intent addNew=新Intent(此为AddItem.class);
startActivity(addNew);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
MenuInflater inf=getMenuInflater();
inf.充气(R.menu.itemstuff,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.ea:
deleteAll();
返回true;
案例R.id.pref:
seePrefs();
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
公共空间参考文献(){
}
public void deleteAll(){
listOfAll.clear();
完成();
startActivity(getIntent());
}
}
请随时向我推荐链接,以便知道从何处开始或询问任何规格

谢谢你抽出时间

setOnItemClickListner存在问题:

  myOwnRc.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int pos, long id){

            }
        });
myOwnRc.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整数位置、长id){
}
});

myOwnRc之后为红色,但第二行接受。

使用这些行在活动中显示数据后:

 mLayoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(mLayoutManager);


 mAdapter = new MyAdapter(myDataset);
 mRecyclerView.setAdapter(mAdapter);
您可以设置setonItemClickListener

mRecylerView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
           //here you can use the id or position to make changes to your data
           //Something like myDataset.add or myDataset.remove

           String one = myDataset.get(position).getString1();
        }
    });
mRecylerView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//在这里,您可以使用id或位置对数据进行更改
//类似于myDataset.add或myDataset.remove的内容
stringone=myDataset.get(position.getString1();
}
});
编辑:更新的主要活动部分:

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
myOwnRc.setLayoutManager(linearLayoutManager);
strAdapter = new StringsAdapter(listOfAll);
myOwnRc.setAdapter(strAdapter);
myOwnRc.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    }
});
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(此);
myOwnRc.setLayoutManager(直线布局管理器);
strAdapter=新StringsAdapter(列表所有);
myOwnRc.setAdapter(斯特拉达普特);
myOwnRc.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
}
});

所以我正在努力理解你的答案。然而,我被困在第二步,
setonItemClickListner
。我相信我正在我的
main活动中显示它,但是,我仍然看不到第二部分应该设置在哪里?在步骤1的最后一行之后,您可以从步骤2开始。这意味着您现在已成功显示视图并准备好检查任何单击事件。检查编辑的ans…您将更好地了解如何使用itI,不幸的是,没有
setonItemClickListener
,壁橱是:
setOnClickListener
,它们是相同的吗???不。它们不是。setOnClick用于整个区域,而不是单个元素。
mRecylerView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
           //here you can use the id or position to make changes to your data
           //Something like myDataset.add or myDataset.remove

           String one = myDataset.get(position).getString1();
        }
    });
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
myOwnRc.setLayoutManager(linearLayoutManager);
strAdapter = new StringsAdapter(listOfAll);
myOwnRc.setAdapter(strAdapter);
myOwnRc.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    }
});