Return recyclerview 中点击的位置不同Activity?
Return the position clicked in recyclerview in a different Activity?
我在导航抽屉中有一个 recyclerview,我希望在不同的 activity 中找到用户在 recyclerview 中单击的位置。我写代码的方式目前总是return 0作为位置。谁能帮我吗。提前致谢!
导航抽屉代码中的 Recyclerview:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
final Bundle savedInstanceState) {
// Inflate the layout for this fragment
View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList);
adapter = new NavigationDrawerFragmentAdapter(getActivity(), getData());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView,new RecyclerViewClickListener() {
@Override
public void onClick(View view, int position) {
if (position == 0){
}
if (position == 27){
}
if (position == 28){
}
if (position == 29){
}
if (position ==30){
}
else{
test.getPositionClicked(position);
Intent i = new Intent(getActivity(), Test.class);
startActivity(i);
}
}
@Override
public void onLongClick(View view, int position) {
}
}));
return layout;
}
还有我的 Activity 代码,我希望找到点击的位置:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
Toast.makeText(Test.this, "Toast is working " + pos, Toast.LENGTH_SHORT).show();
if (pos == 1){
Toast.makeText(Test.this, "Accounting", Toast.LENGTH_SHORT).show();
}
}
public void getPositionClicked(int position) {
position = pos;
}
再次感谢!
您需要在一个包中传递数据并将其添加到新 activity 的意图中。
// 在回收站点击 onClick
Intent intent = new Intent();
intent.setClass(context, Other_Activity.class);
intent.putExtra("SOME_ID", position);
startActivity(intent);
//第二个activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
if (extras != null) {
int position = extras.getInt("SOME_ID");
}
如果我对你的理解正确,你想将位置传递给你正在启动的 activity。然后就可以把position的值传给intent了:
Intent i = new Intent(getActivity(), Test.class);
i.putExtra("position", position);
startActivity(i);
然后在您的测试 activity 中检索值:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
Bundle extras = getIntent().getExtras();
if(extras != null) position = extras.getInt("position", 0);
}
我在导航抽屉中有一个 recyclerview,我希望在不同的 activity 中找到用户在 recyclerview 中单击的位置。我写代码的方式目前总是return 0作为位置。谁能帮我吗。提前致谢!
导航抽屉代码中的 Recyclerview:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
final Bundle savedInstanceState) {
// Inflate the layout for this fragment
View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList);
adapter = new NavigationDrawerFragmentAdapter(getActivity(), getData());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView,new RecyclerViewClickListener() {
@Override
public void onClick(View view, int position) {
if (position == 0){
}
if (position == 27){
}
if (position == 28){
}
if (position == 29){
}
if (position ==30){
}
else{
test.getPositionClicked(position);
Intent i = new Intent(getActivity(), Test.class);
startActivity(i);
}
}
@Override
public void onLongClick(View view, int position) {
}
}));
return layout;
}
还有我的 Activity 代码,我希望找到点击的位置:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
Toast.makeText(Test.this, "Toast is working " + pos, Toast.LENGTH_SHORT).show();
if (pos == 1){
Toast.makeText(Test.this, "Accounting", Toast.LENGTH_SHORT).show();
}
}
public void getPositionClicked(int position) {
position = pos;
}
再次感谢!
您需要在一个包中传递数据并将其添加到新 activity 的意图中。
// 在回收站点击 onClick
Intent intent = new Intent();
intent.setClass(context, Other_Activity.class);
intent.putExtra("SOME_ID", position);
startActivity(intent);
//第二个activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
if (extras != null) {
int position = extras.getInt("SOME_ID");
}
如果我对你的理解正确,你想将位置传递给你正在启动的 activity。然后就可以把position的值传给intent了:
Intent i = new Intent(getActivity(), Test.class);
i.putExtra("position", position);
startActivity(i);
然后在您的测试 activity 中检索值:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
Bundle extras = getIntent().getExtras();
if(extras != null) position = extras.getInt("position", 0);
}