【问题标题】:ListView OnItemClickListener with a new activity带有新活动的 ListView OnItemClickListener
【发布时间】:2012-02-16 08:45:47
【问题描述】:

我有一个带有 OnItemClickListener 的 listView。当我点击一个项目时,我想在一个新的 Activity 中打开一个新视图,如下所示:

final ListView lv1 = (ListView) findViewById(R.id.ListView02);
    lv1.setAdapter(new SubmissionsListAdapter(this,searchResults));

    lv1.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
            int position, long id) {
            Intent myIntent = new Intent(v.getContext(), UserSubmissionLog.class);
            startActivityForResult(myIntent, 0);
            UserSubmissionLog userSubmissionLogs= new UserSubmissionLog(position);
            System.out.println("Position "+position);
            }
        }
    );

问题是我必须将点击的位置编号转移到新的活动中,并且不知道该怎么做。

谢谢。

【问题讨论】:

    标签: android android-listview android-activity


    【解决方案1】:

    您应该将其添加到意图中:

    Intent myIntent = new Intent(v.getContext(), UserSubmissionLog.class);
    myIntent.putExtra("position", position);
    startActivityForResult(myIntent, 0);
    

    并在新的 Activity 中调用:

    int prePosition = getIntent().getIntExtra("position", someDefaultIntValue);
    

    【讨论】:

    • @PareshMayani - 他在哪里打电话给putExtra
    【解决方案2】:

    试试这个,

    public class yourClassName
    {
         private static listIndex = 0;
         ......
         ......
         final ListView lv1 = (ListView) findViewById(R.id.ListView02);
        lv1.setAdapter(new SubmissionsListAdapter(this,searchResults));
    
        lv1.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
                listIndex = position;
                Intent myIntent = new Intent(v.getContext(), UserSubmissionLog.class);
                startActivityForResult(myIntent, 0);
                UserSubmissionLog userSubmissionLogs= new UserSubmissionLog(position);
                System.out.println("Position "+position);
                }
            }
        );
    
       // make new static method to access listIdex from another class
       private static int getListIndex()
       {
            return position;
       }
    }
    

    【讨论】:

      【解决方案3】:
      Intent myIntent = new Intent(v.getContext(), UserSubmissionLog.class);
      myIntent.putExtra("your_key_name_for_this_extra", position);
      startActivityForResult(myIntent, 0);
      

      对于接收活动,通过获取int值

      int receivedValue = getIntent().getIntExtra("your_key_name_for_this_extra", default_value);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多