Java 个性化适配器,尝试获取每个元素';s id并显示它
我目前正在使用个人适配器。 我每一个都有一些按钮。 一个要删除,一个要编辑,一个要添加到共享优先列表 但是,我不知道如何从元素中获取Id或特定属性,例如它的Id 换句话说,我尝试在单击其中一个按钮时获取要显示的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
@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) {
}
});