ListView数据没显示出来,也没报错,麻烦大家帮忙看看呗

曾小怪 2019-04-16 03:06:12
//main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical">

<ListView
android:id="@+id/lv_contact"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>


//view_home.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<LinearLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="80dp"
android:gravity="center"
android:orientation="vertical" >

<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试活动" />

<TextView
android:layout_marginTop="20dp"
android:id="@+id/shijian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试时间" />
</LinearLayout>

</RelativeLayout>



以上是我的两个xml布局文件



这里是Acticity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

public ListView lv;
public ArrayList<Map<String, Object>> list = new ArrayList<Map<String,Object>>();

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}

private void init(){
list.clear();
lv = (ListView) View.inflate(this,R.layout.main,null).findViewById(R.id.lv_contact);
new Thread(new Runnable() {
@Override
public void run() {
try {
OkHttpClient client = new OkHttpClient();
Request request = new Request
.Builder()
.url("http://120.36.153.174:9080/CargolistApi/select").build();
Response response = client.newCall(request).execute();
String responseData = response.body().string();
parseJSONWithJSONObject(responseData);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}

private void parseJSONWithJSONObject(String jsonData) {
if (jsonData != null) {
try {
JSONObject jsonObject = new JSONObject(jsonData);
String resultCode = jsonObject.getString("flag");
//如果返回的值是success则正确
if (resultCode.equals("success")) {
JSONArray resultJsonArray = jsonObject.getJSONArray("data");
Log.d("MainActivity","data+++"+resultJsonArray); //数据是有获取到的
for (int i = 0; i < resultJsonArray.length(); i++) {
JSONObject Object = resultJsonArray.getJSONObject(i);
Map<String, Object> map = new HashMap<String, Object>();
try {
String name = Object.getString("cargono");
String shijian = Object.getString("variety");
Log.d("MainActivity","name is:"+name);
Log.d("MainActivity","shijian is"+shijian);

map.put("cargono", name);
map.put("variety", shijian);

//ArrayList集合
list.add(map);
}catch (Exception e) {
e.printStackTrace();
}
}

Message message = new Message();
message.what = 1;
handler.sendMessage(message);

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

@SuppressLint("HandlerLeak")
public Handler handler = new Handler() {

@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
Mybaseadapter list_item = new Mybaseadapter();
lv.setAdapter(list_item);
break;
}
}
};


适配器

public class Mybaseadapter extends BaseAdapter {

@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int position) {
return list.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

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

ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = getLayoutInflater().inflate(R.layout.view_home,null);
viewHolder.textView = (TextView) convertView.findViewById(R.id.tv);
viewHolder.shijian = (TextView) convertView.findViewById(R.id.shijian);

convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}

viewHolder.textView.setText(list.get(position).get("name").toString());
viewHolder.shijian.setText(list.get(position).get("shijian").toString());
return convertView;
}
}

final static class ViewHolder {
TextView textView;
TextView shijian;
}

@Override
public void onClick(View view) {

}
}



这个是服务器端的json数据
...全文
1054 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
曾小怪 2019-04-18
  • 打赏
  • 举报
回复
引用 26 楼 优⃢ 的回复:
适配器的第四行的函数错了
按照15楼的方法修改,问题已经解决了哦,感谢大家
Felix_Fly2021 2019-04-17
  • 打赏
  • 举报
回复
public class MainActivity extends AppCompatActivity implements View.OnClickListener { public ListView lv; public ArrayList<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private Mybaseadapter list_item; private void init(){ list.clear(); lv = (ListView)findViewById(R.id.lv_contact); list_item = new Mybaseadapter(); lv.setAdapter(list_item); new Thread(new Runnable() { @Override public void run() { try { OkHttpClient client = new OkHttpClient(); Request request = new Request .Builder() .url("http://120.36.153.174:9080/CargolistApi/select").build(); Response response = client.newCall(request).execute(); String responseData = response.body().string(); parseJSONWithJSONObject(responseData); }catch (Exception e){ e.printStackTrace(); } } }).start(); } private void parseJSONWithJSONObject(String jsonData) { if (jsonData != null) { try { JSONObject jsonObject = new JSONObject(jsonData); String resultCode = jsonObject.getString("flag"); //如果返回的值是success则正确 if (resultCode.equals("success")) { JSONArray resultJsonArray = jsonObject.getJSONArray("data"); Log.d("MainActivity","data+++"+resultJsonArray); //数据是有获取到的 for (int i = 0; i < resultJsonArray.length(); i++) { JSONObject Object = resultJsonArray.getJSONObject(i); Map<String, Object> map = new HashMap<String, Object>(); try { String name = Object.getString("cargono"); String shijian = Object.getString("variety"); Log.d("MainActivity","name is:"+name); Log.d("MainActivity","shijian is"+shijian); map.put("cargono", name); map.put("variety", shijian); //ArrayList集合 list.add(map); }catch (Exception e) { e.printStackTrace(); } } handler.sendEmptyMessageDelayed(1,100); } }catch (Exception e){ e.printStackTrace(); } } } @SuppressLint("HandlerLeak") public Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: list_item.notifiDataSetChange(); break; } } }; //试试看这样子能行吗?我对你的代码做了一点修改 }
痞子わ戏子 2019-04-17
  • 打赏
  • 举报
回复
有木有大佬知道怎么设计遥控控制
曾小怪 2019-04-17
  • 打赏
  • 举报
回复
引用 15 楼 2018-Fly 的回复:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { public ListView lv; public ArrayList<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private Mybaseadapter list_item; private void init(){ list.clear(); lv = (ListView)findViewById(R.id.lv_contact); list_item = new Mybaseadapter(); lv.setAdapter(list_item); new Thread(new Runnable() { @Override public void run() { try { OkHttpClient client = new OkHttpClient(); Request request = new Request .Builder() .url("http://120.36.153.174:9080/CargolistApi/select").build(); Response response = client.newCall(request).execute(); String responseData = response.body().string(); parseJSONWithJSONObject(responseData); }catch (Exception e){ e.printStackTrace(); } } }).start(); } private void parseJSONWithJSONObject(String jsonData) { if (jsonData != null) { try { JSONObject jsonObject = new JSONObject(jsonData); String resultCode = jsonObject.getString("flag"); //如果返回的值是success则正确 if (resultCode.equals("success")) { JSONArray resultJsonArray = jsonObject.getJSONArray("data"); Log.d("MainActivity","data+++"+resultJsonArray); //数据是有获取到的 for (int i = 0; i < resultJsonArray.length(); i++) { JSONObject Object = resultJsonArray.getJSONObject(i); Map<String, Object> map = new HashMap<String, Object>(); try { String name = Object.getString("cargono"); String shijian = Object.getString("variety"); Log.d("MainActivity","name is:"+name); Log.d("MainActivity","shijian is"+shijian); map.put("cargono", name); map.put("variety", shijian); //ArrayList集合 list.add(map); }catch (Exception e) { e.printStackTrace(); } } handler.sendEmptyMessageDelayed(1,100); } }catch (Exception e){ e.printStackTrace(); } } } @SuppressLint("HandlerLeak") public Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: list_item.notifiDataSetChange(); break; } } }; //试试看这样子能行吗?我对你的代码做了一点修改 }
哦吼,可以了。嘻嘻
曾小怪 2019-04-17
  • 打赏
  • 举报
回复
引用 15 楼 2018-Fly 的回复:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { public ListView lv; public ArrayList<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private Mybaseadapter list_item; private void init(){ list.clear(); lv = (ListView)findViewById(R.id.lv_contact); list_item = new Mybaseadapter(); lv.setAdapter(list_item); new Thread(new Runnable() { @Override public void run() { try { OkHttpClient client = new OkHttpClient(); Request request = new Request .Builder() .url("http://120.36.153.174:9080/CargolistApi/select").build(); Response response = client.newCall(request).execute(); String responseData = response.body().string(); parseJSONWithJSONObject(responseData); }catch (Exception e){ e.printStackTrace(); } } }).start(); } private void parseJSONWithJSONObject(String jsonData) { if (jsonData != null) { try { JSONObject jsonObject = new JSONObject(jsonData); String resultCode = jsonObject.getString("flag"); //如果返回的值是success则正确 if (resultCode.equals("success")) { JSONArray resultJsonArray = jsonObject.getJSONArray("data"); Log.d("MainActivity","data+++"+resultJsonArray); //数据是有获取到的 for (int i = 0; i < resultJsonArray.length(); i++) { JSONObject Object = resultJsonArray.getJSONObject(i); Map<String, Object> map = new HashMap<String, Object>(); try { String name = Object.getString("cargono"); String shijian = Object.getString("variety"); Log.d("MainActivity","name is:"+name); Log.d("MainActivity","shijian is"+shijian); map.put("cargono", name); map.put("variety", shijian); //ArrayList集合 list.add(map); }catch (Exception e) { e.printStackTrace(); } } handler.sendEmptyMessageDelayed(1,100); } }catch (Exception e){ e.printStackTrace(); } } } @SuppressLint("HandlerLeak") public Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: list_item.notifiDataSetChange(); break; } } }; //试试看这样子能行吗?我对你的代码做了一点修改 }
好的,感谢。我试试
曾小怪 2019-04-17
  • 打赏
  • 举报
回复
引用 14 楼 哈哈的bug 的回复:
题外话建议使用RecyclerView,先不说这个到底好在什么地方,现在也很少见到有用ListView 这个似乎更重要一点
是吗,哈哈哈哈哈哈,不是做安卓的所以有点不清楚,好的呢
  • 打赏
  • 举报
回复
厉害了 看晕
HpVIP 2019-04-17
  • 打赏
  • 举报
回复
引用 11 楼 无fucker说 的回复:
用你的代码运行直接CRASH,你能成功运行?
viewHolder.textView.setText(list.get(position).get("name").toString());
viewHolder.shijian.setText(list.get(position).get("shijian").toString());

改成
viewHolder.textView.setText(list.get(position).get("cargono").toString());
viewHolder.shijian.setText(list.get(position).get("variety").toString());

list.get(position)是得到map对象,你要显示的是map<key,value>中的的value,value=map.get(key),里面是你的key--"cargono",
"variety"

厉害啦
曾小怪 2019-04-17
  • 打赏
  • 举报
回复
引用 21 楼 weixin_44933334 的回复:
我看晕了
哈哈哈
weixin_44933334 2019-04-17
  • 打赏
  • 举报
回复
我看晕了
哈哈的bug 2019-04-16
  • 打赏
  • 举报
回复
题外话建议使用RecyclerView,先不说这个到底好在什么地方,现在也很少见到有用ListView 这个似乎更重要一点
曾小怪 2019-04-16
  • 打赏
  • 举报
回复
[quote=引用 11 楼 无fucker说 的回复:] 我也是醉,用你的代码运行直接CRASH,你能成功运行? viewHolder.textView.setText(list.get(position).get("name").toString()); viewHolder.shijian.setText(list.get(position).get("shijian").toString()); 改成 viewHolder.textView.setText(list.get(position).get("cargono").toString()); viewHolder.shijian.setText(list.get(position).get("variety").toString()); list.get(position)是得到map对象,你要显示的是map<key,value>中的的value,value=map.get(key),里面是你的key--"cargono", "variety" [/quo 不好意思,我的错,
曾小怪 2019-04-16
  • 打赏
  • 举报
回复
引用 11 楼 无fucker说 的回复:
我也是醉,用你的代码运行直接CRASH,你能成功运行? viewHolder.textView.setText(list.get(position).get("name").toString()); viewHolder.shijian.setText(list.get(position).get("shijian").toString()); 改成 viewHolder.textView.setText(list.get(position).get("cargono").toString()); viewHolder.shijian.setText(list.get(position).get("variety").toString()); list.get(position)是得到map对象,你要显示的是map<key,value>中的的value,value=map.get(key),里面是你的key--"cargono", "variety"
我这个有保存的鸭
雕·不懒惰 2019-04-16
  • 打赏
  • 举报
回复


我也是醉,用你的代码运行直接CRASH,你能成功运行?
viewHolder.textView.setText(list.get(position).get("name").toString());
viewHolder.shijian.setText(list.get(position).get("shijian").toString());

改成
viewHolder.textView.setText(list.get(position).get("cargono").toString());
viewHolder.shijian.setText(list.get(position).get("variety").toString());

list.get(position)是得到map对象,你要显示的是map<key,value>中的的value,value=map.get(key),里面是你的key--"cargono",
"variety"
曾小怪 2019-04-16
  • 打赏
  • 举报
回复
引用 7 楼 无fucker说 的回复:
断点,一步步查询,先handleeMessage输出看看,再看list.size
不好意思,还想你再看一下
曾小怪 2019-04-16
  • 打赏
  • 举报
回复
引用 8 楼 无fucker说 的回复:
json解析可以去看看Gson,基本上一步到位,不用自己去层层解析
嗯嗯,好的,感谢
雕·不懒惰 2019-04-16
  • 打赏
  • 举报
回复
json解析可以去看看Gson,基本上一步到位,不用自己去层层解析
雕·不懒惰 2019-04-16
  • 打赏
  • 举报
回复
断点,一步步查询,先handleeMessage输出看看,再看list.size
曾小怪 2019-04-16
  • 打赏
  • 举报
回复
引用 4 楼 无fucker说 的回复:
不是内部类,你的Adapter里面的list哪来的
好像没有执行getView,我在getView里打印日志没有输出。不明白
曾小怪 2019-04-16
  • 打赏
  • 举报
回复
引用 4 楼 无fucker说 的回复:
不是内部类,你的Adapter里面的list哪来的
嗯,是的,是activity内部类,
加载更多回复(4)

80,359

社区成员

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

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