【问题标题】:How to call a new intent from SetOnItemClickListener of an Adapter in ListView如何从 ListView 中适配器的 SetOnItemClickListener 调用新意图
【发布时间】:2014-04-09 19:24:54
【问题描述】:

下面是带有适配器的列表视图的代码

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_online_users);
    final ListView listview = (ListView) findViewById(R.id.listviewusers);
    //onlineUsers.setAdapter()

    //final ListView listview = (ListView) findViewById(R.id.listview);

    Intent intent = getIntent();

    String username = intent.getStringExtra(connection.SERVER_ONLINE_USERS);

    String[] values = username.split(",");

    final ArrayList<String> list = new ArrayList<String>();
    for (int i = 0; i < values.length; ++i) {
      list.add(values[i]);
    }
    final StableArrayAdapter adapter = new StableArrayAdapter(this,
        android.R.layout.simple_list_item_1, list);
    listview.setAdapter(adapter);


    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

      @Override
      public void onItemClick(AdapterView<?> parent, final View view,
          int position, long id) {
        final String item = (String) parent.getItemAtPosition(position);

       // view.setAlpha(1);

      }


    });

  }

我想要做的是获取将在列表视图中单击的字符串项目,开始一个新的意图并将字符串项目传递给它,

类似于:

Intent i = new Intent(this, activity.class);
sign.putExtra(KEY, value);
startActivity(i);

但是当我在onItemClickListener() 中使用上面的Intent 代码时,我得到了一个错误。

"The Constructor Intent(New AdapterView.OnItemClickListener(){}, Class<activity>) is undefined"

修复它的建议方法是从意图中删除参数并让它像这样

Intent i = new Intent(); 

【问题讨论】:

  • 问题是你没有告诉我们问题是什么
  • 一旦我点击列表视图上的某些内容,它将保存在最终的字符串项目中,我想将此字符串添加到捆绑包中并开始一个新活动
  • 那么在 setOnItemClickListener() 的 onItemClick() 中替换您的意图代码有什么问题?
  • 对不起,如果我没有明确说明问题,当我写这个时,我收到一个错误,建议的解决方法是从意图中删除参数并像这样 Intent i = new意图(); “构造函数 Intent(New AdapterView.OnItemClickListener(){}, Class) 未定义”

标签: android listview android-intent adapter


【解决方案1】:

我对这个问题感到困惑,因为您似乎知道该怎么做。那就一起来看看吧

 @Override
  public void onItemClick(AdapterView<?> parent, final View view,
      int position, long id) {
    final String item = (String) parent.getItemAtPosition(position);

   // view.setAlpha(1);

   Intent i = new Intent(view.getContext(), activity.class);  // get a valid context
   i.putExtra("someKey", item);  //I don't know where sign came from
   startActivity(i);

  }

然后在您的Activity 中获取它,例如在onCreate()

Intent itent = getIntent();
String value = intent.getStringExtra("someKey");

【讨论】:

  • 很抱歉,如果我没有清楚地说明问题,当我写这个时,我收到一个错误,建议的解决方法是从意图中删除参数并像这样 Intent i = new意图(); “构造函数 Intent(New AdapterView.OnItemClickListener(){}, Class) 未定义”
  • 这些信息从一开始就非常很有价值,尽管我也很怀疑。再看我的回答。您没有使用有效的Context
  • 不客气。没问题,下次请记住,如果您不告诉我们,我们通常不知道您遇到的问题。通常它可以有很多可能性。写完后,像以前从未见过代码一样通读问题......这应该会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多