当前位置: 首页 > 知识库问答 >
问题:

如何获取listview项的值并将其显示在AlertDialog上?

钱雅逸
2023-03-14

我有一个列表视图,显示了我从Github API得到的一些信息,我为每个项目设置了ItemClickListener,这样我就可以在警报对话框中显示一些关于它们的信息。

在你用重复标记这个之前,我想说这些解决方案都不适合我如何获得在Android系统中点击的列表视图项目的值?

我试过这个:

call.enqueue(new Callback<List<GithubRepo>>() {
      @Override public void onResponse(@NonNull Call<List<GithubRepo>> call,
          Response<List<GithubRepo>> response) {

        if (response.isSuccessful()) {

          List<GithubRepo> repos = response.body();
          listViewRepo.setAdapter(new GitHubRepoAdapter(ReposActivity.this, repos));
        }
      }

listViewRepo.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        String val = (String) parent.getItemAtPosition(position);

        AlertDialog.Builder adb = new AlertDialog.Builder(ReposActivity.this);

        adb.setMessage(val).show();
      }
    });  

但我得到了类Cast异常

java.lang.ClassCast异常:us.egek.repofinderforgithub.GithubRepo不能被强制转换为java.lang.字符串us.egek.repofinderforgithub.Reposactive$2.on项点击(ReposActivity.java:63)android.widget.AdapterView.perform项点击(AdapterView.java:299)android.widget.AbsListView.perform项点击(AbsListView.java:1162)android.widget.AbsListView$PerformClick.run(AbsListView.java:2953)android.widget.AbsListView$3.run(AbsListView.java:3708)android.os.Handler.handle回调(Handler. java: 733)在android. os。在android. app.的android. os. looper. cle(Looper. java: 149)上的Handler.调度消息(Handler. java: 95)。在java. lang. reect.法。调用本机方法(本机方法)在dalvik. system. NativeStart. main. NativeStart. main. Native方法(本机方法)。方法。java: 515)在com. android. interal. os。ZygoteInit$MEodAndArgsCaller. run(ZygoteInit. java: 793)在dalvik. system。本机方法)

适配器:

public class GitHubRepoAdapter extends ArrayAdapter<GithubRepo> {

  private Context context;
  private List<GithubRepo> values;

  public GitHubRepoAdapter(Context context, List<GithubRepo> values) {
    super(context, R.layout.list_item, values);

    this.context = context;
    this.values = values;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;

    if (row == null) {
      LayoutInflater inflater =
          (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      row = inflater.inflate(R.layout.list_item, parent, false);
    }

    TextView textView = (TextView) row.findViewById(R.id.list_item_pagination_text);

    GithubRepo item = values.get(position);
    String message = item.getName();
    textView.setText(message);

    return row;
  }
}

共有2个答案

温成济
2023-03-14
String S = view.getContext().toString();
方梓
2023-03-14

使用这个:

String val = (String) repos.get(position).getName();

然后可以在对话框中使用该值

 类似资料:
  • 问题内容: 我试图获取查找栏的值,只要它发生更改并在下面显示。我正在使用我的seekbar上的方法来调用此方法。 问题答案: 这里有一些额外的帮助: 使用该事件检查搜索栏的进度,您可以将该int返回以在应用程序的其他地方使用它。

  • 问题内容: 我有一个问题,如何向AllertDialog显示此数组item_detail? } 这是我的代码: } 问题答案: 我还有一个问题,如何使图片显示在内容区域而不是图标中。你能再帮我吗?所以这是您的完整代码: XML:(alert_background.xml) Java代码:

  • 问题内容: 在最近的几天里,我试图从SQL表中获取数据并将其放入文本框。 表名称:“检查”。 我正在使用的代码: 结果我什么也没得到。有人知道为什么吗?也许我没有正确调用SQL? 问题答案: 一些评论: 不要使用,仅指定您需要的字段 使用-更少的代码,保证处理 我假设这是一个测试程序,否则在循环中将其重置为无意义

  • 问题内容: 我是android和java的新手,最近在使用baseadapter将获取的json数据显示到listview中时遇到问题。起初我使用了这段代码 此代码成功显示获取的json数据。但它仅显示一行。我在列表视图中需要多于一(两)行。因此,我尝试了此代码,但它不起作用,它显示了一个空白屏幕。 我的代码如下 据我所知,问题就在这里 到目前为止,我猜测提取的json数据存储在stringArr

  • 我开发了一个聊天应用程序。我试图从firebase数据库中获取数据,并将其显示在一个recyclerview中,但这并不起作用。我在谷歌上搜索了它,我试了很多选项,但它什么都显示不出来。我做错了什么?这些活动是: 1.主活动(我想在哪里显示数据) }

  • 所以我正在学习关于android的Firebase存储,但我遇到了困难。我想要获得我存储在Firebase存储的文件夹中的所有图像,一旦获得对它们的引用,我想要将它们存储在ListView或RecyclerView中。我该怎么做?我的意思是我可以获得文件夹的引用: