【问题标题】:How to perform intent function in selected row of Listview如何在列表视图的选定行中执行意图功能
【发布时间】:2013-02-15 18:31:45
【问题描述】:

我已经创建了一些名称的列表视图,我需要的是当我单击选定的行时它只会转到该页面,单击不同的行它将移动到同一类但不同的内容。我认为它会通过问题 id 移动。任何人都可以帮助我如何传递问题 id 或任何其他方法来做到这一点..

这是我的代码..

private OnItemClickListener mlist = new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {


    }       
};

【问题讨论】:

  • 你的意思是同一个活动有多个部分?
  • @Anukool 不,我的意思是,如果我单击一个名称,它将移至另一个页面,其中包含该名称的描述..
  • 查看this 帖子以将数据从 ListView 传递到下一个 Activity。 this post 也不错。特别是google。
  • @AdilSoomro 谢谢..但我需要当我点击任何行时,它只会移动到那个特定的行页..

标签: android android-listview onitemclicklistener


【解决方案1】:

你可以试试这样 -

private OnItemClickListener mlist = new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

        if(Some condition)
        {
            Intent i= new Intent(YourActivity.this,ActivityOne.class);
            // To pass data 
            i.putExtra("SomeId", someValue);
            startActivity(i);
        }
        else if(Some other condition)
        {
            Intent i= new Intent(YourActivity.this,SecondActivityTwo.class);
            startActivity(i);
        }
        else
        {
            // Do something else--
        }

    }       
};

在其他活动中 -

String identifier = getIntent().getExtras().getString("SomeId");

【讨论】:

  • 我希望假设您单击第一行,它将移动到 aaa.class..next 如果您单击第三行,它应该移动到具有不同内容的 aaa.class ..通过传递用户 ID..或某事
  • @Sangita:你得再解释一下。
  • k..look..我有 10 个列表行..在每一行上点击..它会显示一些内容..这也将在列表视图中
  • @Sangita :单击时您是否填充了新的 ListView ?或者您在谈论嵌套列表视图?
  • 在行上单击它会显示一些自定义列表视图,该列表视图将仅包含该行的内容..
【解决方案2】:

这里我给出了一个示例,假设您有用户列表并单击要显示用户个人资料的项目...

在 List_Act 活动中...

public View getView(int position, View convertView, ViewGroup parent)
{
    convertView = mInflater.inflate(R.layout.rowitem,parent,false);

    convertView.setTag(UserId);
}

private OnItemClickListener mlist = new OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Intent i=new Intent(List_Act.this, Profile_Act.class);
            int UserId = ((View)v.getParent()).getTag();
            i.putExtra("UserId", UserId);  //Setting variable you want to pass to another activity
            startActivity(i);
        }       
    };

在 onCreate() 中的 Profile_Act 活动中

String UserId = getIntent().getExtras().getString("UserId");  //retrieving value in another activity

现在您将设置 UserId 变量并且可以使用它...

【讨论】:

  • @Sangita 是的,您必须将标签分配给适配器类的 getView() 中的项目,此标签应该是用户的 id 或您想要传递的东西......并且在 onclick 方法中你可以获取标签id并通过...
  • @Sangita 现在检查...在 getView 方法中我已经为列表项设置了标签...
  • 我已经创建了基本适配器..我需要将名称 id 从一个活动传递到另一个活动
  • @Sangita 是的,在 BaseAepter 扩展的类中,您将在此方法中覆盖方法 public View getView(int position, View convertView, ViewGroup parent) 您可以按照我提到的那样设置标签,并在onclick 您可以从标签中检索值并使用 putExtra 您可以传递它...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
  • 2018-10-04
  • 1970-01-01
  • 2021-04-23
相关资源
最近更新 更多