如何在同一tabAdapter中传递两个不同的ID?

时间:2016-02-01 05:49:02

标签: android listview android-fragments tabs bundle

主页中,它有listView(从MySQL检索)和popup Menu,其中popup Menu视图页。 查看也有listView

主页 enter image description here

查看

enter image description here

点击主页查看列表后,它会转到片段,其中有4个标签,允许用户对其进行编辑ID。

点击主页列表时

  public static int ID;
      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> listView, View view,
                                        int position, long id) {
                    ID = search.get(position).getID();
                    Toast.makeText(getApplicationContext(), "Edit" + ID, Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(getApplicationContext(), ActivityB.class);
                    intent.putExtra("ID", ID);  // pass to tabAdapter
                    intent.putExtra("name", name); // pass to tabAdapter
                    startActivity(intent);
                }
            });

点击查看

 public static int ID;
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> listView, View view,
                                        int position, long id) {
                    ID = search.get(position).getID();
                    Toast.makeText(getApplicationContext(), "Edit" + ID, Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(getApplicationContext(), ActivityB.class);
                    intent.putExtra("ID", ID); // pass to tabAdapter
                    intent.putExtra("name", name); // pass to tabAdpter
                    startActivity(intent);
                }
            });

TabAdapter

  public Fragment getItem(int index) {
        // TODO Auto-generated method stub

        if(index == 0) {
            Fragment fragment=new EditInformation();
            Bundle bundle = new Bundle();
            bundle.putInt("ID", HomePage.ID);
            fragment.setArguments(bundle);
            return fragment;

        }
}

EditInformation

 Bundle bundle = this.getArguments();
        if (getArguments() != null) {
            ID = bundle.getInt("ID");
        }
        Toast.makeText(getActivity(),"SS"+ID,Toast.LENGTH_LONG).show();

当我单击HomePage中的列表时,它在HomePage和EditInformation中显示正确的ID。但是当我单击View中的列表时,它会显示正确的ID ,但EditInformation 中没有ID显示。

我在bundle.putInt("ID", View.ID);之后添加bundle.putInt("ID", HomePage.ID);,它适用于全部,但不适用于主页! HomePage列表显示其ID,但在EditInformation中显示0 id。

如何解决这个问题? 我们如何区分列表是从All还是View?感谢

1 个答案:

答案 0 :(得分:1)

添加另一个Intent额外信息以指明用户点击的位置。例如,在{strong>主页中OnItemClickListener的{​​{1}}:

ListView

另一个intent.putExtra("FROM_HOME", true);

中的OnItemClickListener
ListView

总而言之,您的intent.putExtra("FROM_HOME", false); 有三个额外内容,您可以通过 ActivityB 中的Intent获取:

让我们为这项活动引入三个变量

getIntent()

然后在private int _id; private String _name; private boolean _fromHome; 你可以得到这样的意图:

onCreate()

现在,您的活动拥有决定应该做什么的所有必要信息。