【问题标题】:Calling finish() inside onClickListener() of a TextView in SimpleAdapter?在 SimpleAdapter 的 TextView 的 onClickListener() 中调用 finish()?
【发布时间】:2012-08-20 11:28:54
【问题描述】:

这里是 AndroidJava 开发人员初学者。

我在 SimpleAdapter 类中有这段代码,用于呈现包含 TextViewImageView 的自定义列表。这是 TextView 在另一个活动中处理 URL 的部分。

    for (int i = 0; i < fromList.length; i++) {
        id = mySimpleAdapter.listMap.get(position).get("id");
        holder.textView[i].setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //How to call finish() here for containing Activity?
                Intent i = new Intent (context, Details.class);
                i.putExtra("url", "http://foo.net/do?id="+id);
                context.startActivity(i);
            }
        });
    }

我的问题是如何简单地调用 Activityfinish() 方法,其中包含这个 SimpleAdapter 的链接 ListView (强制 Activity 在下次调用时完全重新加载)。

感谢任何回答的人。

【问题讨论】:

  • 那该如何调整呢? ` this.adapter = new mySimpleAdapter(listView.getContext(), this.myList, R.layout.updates, new String[] { "status" }, new int[] { R.id.status } ); // 设置列表的适配器 listView.setAdapter(this.adapter);`

标签: android android-intent onclicklistener simpleadapter


【解决方案1】:

在实例化SimpleAdapter 时,您应该将Activity 实例而不是Context 传递给它,然后对其调用finish()。希望这会有所帮助。

【讨论】:

  • 嗨@Egor。谢谢你的评论。是否像`public mySimpleAdapter(Activity activity, Context context, List> data, int resource, String[] from, int[] to) { super(context, data, resource, from,到); // 保存 ArrayList 和上下文以供以后使用 mySimpleAdapter.listMap = data; mySimpleAdapter.context = 上下文; mySimpleAdapter.resource = 资源; mySimpleAdapter.activity = 活动;资源列表 = 到;从列表 = 从; }` 并进行其他调整?
  • 虽然需要上下文来扩展 ListView 的布局。而且我无法弄清楚如何按照您的建议进行操作。
  • @Nono,Activity 是 Context 的子类,所以你可以用它来代替 Context
  • 仍然无法确定如何调整`this.adapter = new mySimpleAdapter(listView.getContext(), this.myList, R.layout.updates, new String[] { "status" }, new int [] { R.id.status } ); // 设置列表的适配器 listView.setAdapter(this.adapter); `
【解决方案2】:

解决这个问题很简单。

首先,您应该声明一个活动实例

private Activity activity;

然后,您应该在此变量中“保存”您的活动实例。在 OnCreate 方法中执行此操作。

activity = this;

然后,只要你想调用函数finish()

activity.finish();

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多