【问题标题】:Change textview of my listview更改我的列表视图的文本视图
【发布时间】:2017-08-06 18:19:20
【问题描述】:

我已经尝试了几天来解决我的问题,但现在我决定尝试问你。我是安卓编程的菜鸟,请见谅。

我有一个主要的Activity,其中有一个Listview

我正在使用 Simplecursoradapter 向它提供来自我的数据库的信息和我作为 XML 制作的自定义布局。

我的问题是,我想更改我在此自定义布局中使用的一些术语或单位,这不是通过数据库提供的。

但是如果我将 settext 用于其中的TextViews,它不会运行,应用程序将崩溃,因为我的setContentView 设置为此类的另一个布局,我猜。我一直在查看inflaters,试图看看我是否可以更改XML 可编程,使用来自String.xml 的字符串并进行更改。但据我所知,这些都不是一种选择。后来我在 StackOverflow 上找到了这段代码

Activity activity = (Activity)getContext();
TextView t = (TextView)activity.findViewById(R.id.txtDisponible);
t.setText("E-ticket validado");

但我无法让它工作,因为第一行不适合我。 Activity 不会给我getcontext 方法。即使我确实让这个工作,我也不知道这是否会工作。你能指导我往哪个方向走吗?截至目前,我的ListView 没有课程,这就是要走的路。我想尽可能简单。

感谢您的帮助。

编辑 1:

好的,我试着把它放在我的代码中:

LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.item_list, null);
    TextView t = (TextView) view.findViewById(R.id.kmListview);
    t.setText("bok");

应用程序不会崩溃,但它也不会更改文本视图。

【问题讨论】:

  • 设置只有 textView 并不能解决您的问题。您需要在适配器中保留数据列表,并且需要更新列表。每次更新列表项后,您需要调用适配器的 notifyDataSetChange() 方法。您对 listView 的工作方式确实有很多问题。我认为,这是 Android 中最难的部分。首先你需要了解ListView,回收ListView中的item,在ListView中使用ViewHolder(用于布局)以及管理listView的item(用于数据)。

标签: java android listview settext


【解决方案1】:

Activity 扩展了 ContextWrapper 类,您应该使用 this 或 getBaseContext(),因为没有像 getContext() 这样扩展 ContextWrapper 类的方法。

所以在你的 Actitiy 中使用它作为 Context 或 getBaseContext(),我认为你的问题会得到解决。

【讨论】:

  • Hmm.. 当我把代码放进去时,我得到这个错误 java.lang.ClassCastException: android.app.ContextImpl cannot be cast to com.uniqueapps.driverslogger2.Main
  • 据我所见,出现此问题是因为我使用 Main 活动来执行此操作。但是由于我没有此列表视图的类或活动,那么我应该放入什么?
  • 点击此链接 [github.com/codepath/android_guides/wiki/…] 希望它有助于更​​好地理解。
猜你喜欢
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 2016-05-04
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
相关资源
最近更新 更多