在 UI 线程中使用 setAdapter 时,listView 中的项目有白色文本

2023-11-21

对于另一个活动中的另一个 listView,项目的文本颜色是黑色,就像它应该的那样。但是,在另一个活动中,当在新线程中使用 setAdapter 时,当创建新项目时,文本颜色是白色,而我希望它是黑色。以下是布局和Java代码的内容:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="project.yemeb.Search"
android:background="#ffffffff">

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="100dp"
    android:background="@drawable/back_web"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    android:id="@+id/relativeLayout"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Search"
        android:id="@+id/button2"
        android:background="#ffffffff"
        android:onClick="onBtnClick"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editText"
        android:layout_alignBottom="@+id/button2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:background="#ffffffff"
        android:layout_toLeftOf="@+id/button2"
        android:layout_toStartOf="@+id/button2"
        android:layout_alignTop="@+id/button2" />
</RelativeLayout>

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_alignParentBottom="true"
    android:layout_below="@+id/relativeLayout"
    android:headerDividersEnabled="false" />
</RelativeLayout>

Java代码:

package project.yemeb;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;


public class Search extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);
    Bundle bundle = getIntent().getExtras();
    String message = bundle.getString("message");
    ((EditText) findViewById(R.id.editText)).setText(message);
    final String url = "http://example.com/sql.php?keyword="+((EditText) findViewById(R.id.editText)).getText().toString()+"&mode=6";
    new Thread() {
        @Override
        public void run() {
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpResponse response = httpclient.execute(new HttpGet(url));
                StatusLine statusLine = response.getStatusLine();
                if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
                    try {
                        response.getEntity().writeTo(out);
                        out.close();
                    } catch (IOException e) {
                    }
                    String responseString = out.toString();
                    String[] list = responseString.split("\\|");
                    for(String f : list)
                    {
                        ((MyApplication)getApplication()).setSearches(f);
                    }
                    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),
                            android.R.layout.simple_list_item_1, ((MyApplication)getApplication()).getSearches());
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                            ((ListView) findViewById(R.id.listView)).setAdapter(adapter);
                        }

                    });
                    ((ListView) findViewById(R.id.listView)).setOnItemClickListener(new AdapterView.OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                                long arg3) {
                            Intent intent = new Intent(getApplicationContext(), List.class);
                            intent.putExtra("message", ((String) ((ListView) findViewById(R.id.listView)).getItemAtPosition(arg2)));
                            startActivity(intent);
                        }
                    });
                    //..more logic
                } else {
                    //Closes the connection.
                    try {
                        response.getEntity().getContent().close();
                        throw new IOException(statusLine.getReasonPhrase());
                    } catch (IOException e) {
                    }
                }
            }
            catch (ClientProtocolException e)
            {

            }
            catch (IOException e)
            {

            }
        }
    }.start();
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.search, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}

我该如何解决这个问题?没有发生任何错误。


你不应该这样做getApplicationContext(),而是尝试使用Search.this.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 UI 线程中使用 setAdapter 时,listView 中的项目有白色文本 的相关文章

  • Android开放电话应用

    我只想打开 Android 设备的电话应用程序 我不想向该应用程序提供电话号码 只是想打开它 我正在使用手机应用程序的包名称来打开它 因为我可以使用下面的代码通过该包名称打开任何我想要的应用程序 Intent launchIntent ge
  • 如何在 AndroidEnvironment 构建文件的环境变量中指定下载目录的路径

    使用 Visual Studio 2022 17 2 0 Preview 1 0 我目前正在尝试创建一个 MAUI 应用程序 该应用程序已经在 Windows 上运行良好 也可以在 Android 下运行 该应用程序使用一个库 SaxonC
  • 在 Android 中不断更新新的 JSON

    我有不断变化的 JSON 我需要在 android 中不断更新更改 我该怎么做 我的Android代码是 r getImage JSONObject data new JSONObject r String a data getString
  • 如何在android中播放音频文件

    我的 Android 手机中有一个 mp3 文件 让它在我的 SD 卡中的某个位置成为 xyz mp3 如何通过我的应用程序播放它 只需您就可以使用MediaPlayer并播放音频文件 查看这个很好的例子 http www helloand
  • android setOnLongClickListner 不适用于 onTouch 事件

    我有一个可拖动和缩放的图像视图 但现在我还需要将 setOnLongClickListner 放在我的图像视图上 我已经这样做了 但它不起作用 但是当我禁用 ontouch 事件时它开始工作 谁能告诉我如何解决这个问题 这是我的代码 ima
  • 从片段调用片段

    我想通过单击当前片段中的按钮来调用当前片段中的另一个片段 这是我的主要活动 import android app FragmentManager import android os Bundle import android support
  • 尝试将 AndroidX 迁移到 Android AppCompat

    从 AndroidX 迁移到 Appcompat 时出现错误 这是日志构建 Manifest merger failed Attribute application appComponentFactory value android sup
  • 在应用程序退出时保存 Android 应用程序数据

    看来关于保存的信息量很大Activity状态 但我一直无法找到太多的信息应用 state 我正在寻找一些设计想法来解决我遇到的问题 我正在开发一个具有相当大的数据模型 1 2 MB 的游戏 该模型存在于任何 Activity 之外 事实上有
  • Eclipse 上的 Android 开发:始终打开新的模拟器

    这应该是一个非常简单的问题 我正在做 Hello Android 教程 我能够将我的应用程序安装到模拟器中 然而 当我再次运行 没有任何更改 时 Eclipse 环境坚持启动一个新的模拟器 而不是连接到现有的模拟器 我该如何解决这个问题 我
  • 使对话框/活动始终位于顶部

    如何将对话框 活动保持在其他活动之上 无论用户是否在活动之间切换 它都应该始终处于活动状态 您可以使用相对布局作为父级 通过使用相对布局 您可以重叠其他布局 所以 你必须使用相对布局的两个子布局 在一个孩子中 您将弹出窗口 而在另一种布局中
  • 了解 Android 上的默认键盘

    我想知道 Android 中用户选择的默认键盘 我知道我可以使用以下命令访问启用的输入法列表InputMethodManager 但我想知道用户当前使用的是哪一个 到目前为止 我已经尝试获取当前的输入法子类型 InputMethodMana
  • 浮动操作按钮未显示在 recyclerview 上(位于 DrawerLayout 内)

    我正在尝试通过 recyclerview 获取 FAB 在我的情况下 它将覆盖整个屏幕 即使 recyclerview 为空 FAB 也不会显示 以下是我的 xml 代码
  • 如何在对话框中显示/隐藏 Android 软键盘?

    在我的应用程序中 自定义对话框位于 BaseExpandableListAdapter 类中 在对话框中我有两个编辑文本 首先是名称及其强制性 其次是解决其可选问题 还有两个按钮 确定 和 取消 当对话框显示时 我想显示带有请求焦点的键盘以
  • 使用“adb devices”命令无法找到 Android 设备

    我正在开发Android申请于macOS我的应用程序在模拟器上运行良好 我想在设备上运行它 但是当我运行时adb devices我什么也没得到 localhost platform tools BF adb devices List of
  • SupportMapFragment 地图为空

    我使用以下代码在 Xamarin Android 中显示地图 private SupportMapFragment mapFragment private GoogleMap map protected override void OnCr
  • 全屏 Exoplayer

    我尝试用以下内容显示节目视频 mp4 外播放器 in 回收视图 and 浏览器 我展示了具有自定义布局的视频控制器 到目前为止 一切都很好 现在尝试像其他视频播放器一样全屏播放视频 但在中找不到好方法外播放器 doc 谁能帮我 ExoPla
  • 为什么我在模拟器中看不到视频?

    我见过几个与此类似的问题 但我想确定一下 我无法在模拟器上运行视频 是否一致 有人在模拟器上成功运行视频吗 以下是我使用的代码 import android app Activity import android net Uri impor
  • 生成最终存档时出错:无法获取调试签名密钥

    我无法在 mac 10 7 上使用 Eclipse 构建和运行我的 android 项目 我收到的错误是 生成最终存档时出错 无法获取调试签名密钥 更改 android 目录中的权限没有成功 尝试生成另一个项目 按照设置 SDK 的指南 甚
  • 如何在Android中将外部jar文件包含到aar文件中

    我想开发一个解决方案 允许我在 Android 项目的 aar 文件中生成的 SDK 中使用外部 jar 库 我有什么输入 SDK de xx sdk xxx android v1 0 0 外部库 libs xxxx v1 0 0 我在调查
  • 如何在android上的manageQuery中添加限制子句

    Android 的 API 通过 SQLite 提供了一种干净的机制来查询联系人列表 但是 我不确定如何限制结果 Cursor cur Activity mCtx managedQuery People CONTENT URI column

随机推荐

  • 使用docker进行谷歌云数据流依赖

    我对使用 Google Cloud Dataflow 并行处理视频感兴趣 我的工作同时使用 OpenCV 和张量流 是否可以只在 docker 实例内运行工作程序 而不是按照所述从源安装所有依赖项 https cloud google co
  • 在 PHP 中将新的键/值对添加到 JSON 中

    我的 MySQL 数据库有一个结果 我用 PHP 进行了 json 编码 结果看起来像 id 8488 name Tenby area Area1 id 8489 name Harbour area Area1 id 8490 name M
  • 如何将库添加到 Xamarin 参考列表

    是否有地方可以放置库 dll 以便它们显示在要选择的项目的引用列表中 我知道我可以从我的个人库中手动添加它们 但是我希望能够将它们添加到可用列表中 因此我所需要做的就是选择它们 我认为会有某种方式来表明它们适用于哪个平台 在 编辑引用 下
  • CefSharp - 获取 HTML 元素的值

    如何使用 CefSharp 获取 HTML 元素的值 我知道如何使用这个默认的 WebBrowser 控件 Dim Elem As HtmlElement WebBrowser1 Document GetElementByID id 但我没
  • 使用 gradle 构建库项目时 BuildConfig.DEBUG 始终为 false

    当我在调试模式下运行应用程序时 BuildConfig DEBUG 不起作用 逻辑上设置为 false 我使用 Gradle 来构建 我有一个图书馆项目 我在其中进行此检查 BuildConfig java 在构建调试文件夹中看起来像这样
  • App Store 下载 dSYM 中缺少 UUID dSYM(更多目标应用程序)

    我在使用 iOS 应用程序 XCode 10 3 时遇到以下问题 Crashlytics 说我缺少 dSYM 并提供了缺少的 dSYM UUID 我缺少必需的和可选的 UUID 该应用程序是BitCode应用程序 dSYM是从AppStor
  • Dygraphs 中的散点图?

    如何使用 dygraphs 绘制散点图 数据如下所示 X 轴可能有 5 20 个值 类别 Y 值可能是 x 轴上每个值 1 10 个值 这是我需要的一个例子 这在 Dygraphs 中可能吗 谢谢 迈克尔 您可以设置 strokeWidth
  • 如何在React js中读取xml文件(data.xml)?

    我尝试读取 xml 文件并解析它react xml parser图书馆 var XMLParser require react xml parser var xml new XMLParser parseFromString xml str
  • 2 个列表的交集和并集

    我正在开始学习 prolog 我使用 SWI prolog 我做了一个简单的练习 其中我有 2 个列表 我想计算它们的交集和并集 这是我的代码 效果很好 但我问自己是否有更好的方法 因为我不喜欢使用剪切操作员 intersectionTR
  • AspectJ:切入点中的参数

    我使用 AspectJ 来建议所有具有所选类参数的公共方法 我尝试了以下方法 pointcut permissionCheckMethods Session sess execution public Session args sess 这
  • 无法通过 SSL 使用 Amazon S3 API?

    我正在尝试使用 Amazon S3 API 加密和上传文件 public class AmazonS3 String KmsId my id comes here private TransferManager getTransferMan
  • css 字体粗细值如何工作?

    我不明白字体粗细值 当我将其更改为粗体 正常或 600 时 也会更改字体 但将其更改为 100 至 500 不会改变任何内容 为什么有这些价值观 The font weight从 100 到 900 的值反映了设计不同粗细字体的排版实践 很
  • 如何在JSP或JSTL中获取页面名称?

    我想使用 JSP 或 JSTL 获取当前页面名称 类似于 myPage 我怎样才能实现这个目标 你可以通过HttpServletRequest getServletPath pageContext request servletPath 您
  • 无法使用节点端口方法在集群外部访问集群中部署的 kubernetes 服务

    我正在尝试访问 Kubernetes 集群部署的 Spring Boot 微服务并尝试测试 REST API 我在部署脚本中配置了节点端口方法 但是当我尝试使用 Postman 工具访问时 我只得到 无法得到任何响应 的响应 我配置了服务
  • 如何从 git 历史记录中删除“太大”文件?

    我将一个 212MB 的文件添加到我的文件夹中并提交并尝试推送它 Git 告诉我文件太大所以我无法推送它 我删除了该文件 但当我尝试推送代码时它仍然显示 我的实际步骤是 I did git add Then git commit m New
  • Meteor/Mongo:查找并更新集合中的某些元素

    我从 Meteor 开始 需要一些关于 Mongo 的帮助 我有一组名称显示在列表上 并且希望能够根据其他条件更新数据库中某些条目的一个变量 基本上我想做的是 对于特征 A true 且 B true 的每个条目 将特征 C 更改为 fal
  • TEXT函数中的$符号是什么意思

    我找到了一个Excel公式 可以将日历日期转换为中国农历日期 TEXT A1 130000 d m yyyy 说A1是 08 12 2018 公式的输出为 2 11 2018 这是如何运作的 什么是 什么是 130000 The MS 的帮
  • 数据迁移中如何访问模型的类级变量?

    这是我的模型 Poll models Model title models CharField max length 1024 MY VAR my class level attribute I want to access this 这是
  • Android RecyclerView 适配器:索引 0 处的notifyItemInserted 和notifyItemMoved 不起作用

    我有一个 RecyclerView 其水平线性布局管理器声明如下 RecyclerView graph RecyclerView findViewById R id graph RecyclerView LayoutManager clas
  • 在 UI 线程中使用 setAdapter 时,listView 中的项目有白色文本

    对于另一个活动中的另一个 listView 项目的文本颜色是黑色 就像它应该的那样 但是 在另一个活动中 当在新线程中使用 setAdapter 时 当创建新项目时 文本颜色是白色 而我希望它是黑色 以下是布局和Java代码的内容