Android中Textview的setText不显示问题

Whyouwhyme 2018-12-20 08:25:32
学校部门的作业,大部分都完成了,但是却在textview上出现问题,经调试后settext赋值后能通过gettext得到值,但就是显示不出来。
Java代码如下:
package com.secondwork.redrock.weatherapp;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.LinearLayout;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.net.HttpURLConnection;
import java.util.ArrayList;
import java.util.List;

public class OutputActivity extends AppCompatActivity {
String CITY;
String Wendu;
String Ganmao;
WeatherAdapter adapter;
List<WeatherData> weatherDataList= new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_output);
Intent intent = getIntent();
CITY = intent.getStringExtra("city");//city通过另一活动得到
adapter = new WeatherAdapter(weatherDataList);
String get;
TextView temp = (TextView) findViewById(R.id.wendu);
TextView city = (TextView) findViewById(R.id.city);
TextView tips=(TextView)findViewById(R.id.ganmao);
initWeatherDatas();//处理数据
city.setText(CITY);//只显示city
tips.setText(Ganmao);//不显示
temp.setText(Wendu);//不显示
get= (String) tips.getText();//能得到值
RecyclerView recyclerView=findViewById(R.id.rv);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
}
private void initWeatherDatas(){
HttpConnect httpConnect = new HttpConnect("https://www.apiopen.top/weatherApi?city="+CITY);
httpConnect.sendRequestWithHttpURLConnection(new HttpConnect.Callback() {
@Override
public void finish(String response) {
parseJson(response);
}
});
}

private void parseJson(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONObject data = new JSONObject(jsonObject.getString("data"));
JSONObject yesterday= new JSONObject(data.getString("yesterday"));
Ganmao=data.getString("ganmao");//所需字符串
Wendu = data.getString("wendu");//所需字符串
String date = yesterday.getString("date");
String high = yesterday.getString("high");
String fengxiang = yesterday.getString("fx");
String low = yesterday.getString("low");
String fl = yesterday.getString("fl");
String type = yesterday.getString("type");
WeatherData weatherData = new WeatherData(date,high,low,fl,fengxiang,type);
weatherDataList.add(weatherData);
JSONArray jsonArray = new JSONArray(data.getString("forecast"));
for(int i=0;i<jsonArray.length();i++){
JSONObject weather = jsonArray.getJSONObject(i);
date = weather.getString("date");
high = weather.getString("high");
fengxiang = weather.getString("fengxiang");
low = weather.getString("low");
fl = weather.getString("fengli");
type = weather.getString("type");
weatherData = new WeatherData(date,high,low,fl,fengxiang,type);
weatherDataList.add(weatherData);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
});


} catch (JSONException e) {
e.printStackTrace();
}
}
}

xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context=".OutputActivity"
tools:layout_editor_absoluteY="81dp">

<TextView
android:id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="8dp"
android:layout_marginTop="48dp"
android:layout_marginEnd="8dp"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/wendu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:textColor="#2e2d2d"
android:textSize="15sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/city" />

<TextView
android:id="@+id/ganmao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:textColor="#5e5959"
android:textSize="15sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />

<android.support.v7.widget.RecyclerView
android:id="@+id/rv"

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />


</android.support.constraint.ConstraintLayout>

如上所示,通过活动传递的city可以显示,但是通过解析JSON得到的字符串赋值后无法显示,请问是什么问题导致的?谢谢,在线等。。
...全文
4162 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tom装上了翅膀 2019-01-15
  • 打赏
  • 举报
回复 2
initWeatherDatas 是异步来获取返回的。 tips.setText(Ganmao);//不显示 temp.setText(Wendu);//不显示 代码都已经走完后,可能才会来进到 public void finish(String response) { parseJson(response); } 可以这样来修改一下: 1、parseJson 获取到Ganmao、Wendu 往外发消息。 private void parseJson(String response) { try { JSONObject jsonObject = new JSONObject(response); JSONObject data = new JSONObject(jsonObject.getString("data")); JSONObject yesterday= new JSONObject(data.getString("yesterday")); Ganmao=data.getString("ganmao");//所需字符串 Wendu = data.getString("wendu");//所需字符串 Message message=new Message(); message.what=1; Map<String,String> map=new HashMap<String, String>(); map.put("ganmao",Ganmao); map.put("Wendu",Wendu); message.obj=map; handler.sendMessage(message); 。。。 2、接受消息 。。。 RecyclerView recyclerView=findViewById(R.id.rv); LinearLayoutManager layoutManager = new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); recyclerView.setLayoutManager(layoutManager); recyclerView.setAdapter(adapter); } //响应消息 Handler handler =new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 1: Map<String,String> map=(Map<String,String>)msg.obj; tips.setText(map.get("ganmao")); temp.setText(map.get("wendu")); break; } } }; private void initWeatherDatas(){ HttpConnect httpConnect = new HttpConnect("https://www.apiopen.top/weatherApi?city="+CITY); httpConnect.sendRequestWithHttpURLConnection(new HttpConnect.Callback() { 。。。
Whyouwhyme 2019-01-14
  • 打赏
  • 举报
回复
问题解决了,使用handler就可以了。感谢楼上多位大神
Tony-老师 2018-12-30
  • 打赏
  • 举报
回复
数据都没回来,就显示数据?
YXTS122 2018-12-22
  • 打赏
  • 举报
回复
看了上面几位大神的解释,学习了。。。。。。。。。。。。。。。。。。。。
Dr. 熊 2018-12-21
  • 打赏
  • 举报
回复
最好贴一下response返回的json数据,因为有可能是JSONObject、JSONArray之间转换出了问题
Dr. 熊 2018-12-21
  • 打赏
  • 举报
回复
根据你的描述,应该是解析方法出问题了,你可以试试单步调试,看看具体问题出现在哪一步
IT_MR_Jie 2018-12-21
  • 打赏
  • 举报
回复
你这个问题是在网络请求返回前就执行了settext操作。解决办法是: 将 tips.setText(Ganmao);//不显示 temp.setText(Wendu);//不显示 这两个赋值方法放到 parseJson 里的 runOnUIThread 的 run 方法里就好了。
jklwan 2018-12-21
  • 打赏
  • 举报
回复
这样的布局方式,RecyclerView显示数据后会把两个TextView给覆盖掉的,把RecyclerView放到第一个就行了。
佛一脚 2018-12-21
  • 打赏
  • 举报
回复
这个应该是线程问题吧,首先网络请求这种耗时操作应该放到子线程中去,第二点设置textview属于更新ui,应该放到主线程中
  • 打赏
  • 举报
回复
返回的太早了
weixin_42601665 2018-12-21
  • 打赏
  • 举报
回复
感谢分享
Whyouwhyme 2018-12-20
  • 打赏
  • 举报
回复
引用 1 楼 sz66cm 的回复:
试一下给不显示文字的两个Textview设置一下背景色,看看布局有没有问题
我已经设置了偏暗的字体,布局的话我用的约束布局,应该没有问题
sz66cm 2018-12-20
  • 打赏
  • 举报
回复
试一下给不显示文字的两个Textview设置一下背景色,看看布局有没有问题

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧