Spinner绑定数据成功可以选择以后没有反应

Sue Zheng 2016-04-24 04:54:21
想请教各位大牛一个问题,这个问题困扰我很久,希望大家可以帮忙看看,欢迎大家讨论啊。。问题如下:
xml文件,就是两个控件 TextView1和mySpinner1
java文件中,有一个变量list,我用线程获取了数据并用Handler hand接收数据,然后成功赋值给list。之后,我把定义了spinner的adapter和setOnItemSelectedListener,加入list数据源,运行后可以看到虽然数据绑定成功,但是首项并未显示,而且点击并没有反应,到底是为什么啊啊啊。。。

其运行效果如下:


其java代码如下:
public class Test extends Activity{
private Spinner mySpinner1;private TextView tv;
private List<String> list = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testxx);

mySpinner1=(Spinner) findViewById(R.id.spinn);
tv=(TextView) findViewById(R.id.textView1);
getlist();
//tv.setText(list.get(1));这里异常,说list.size=0

final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
mySpinner1.setAdapter(adapter);
mySpinner1.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {//点击没有反应
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long arg3) {
tv.setText(String.valueOf(position));
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}

private void getlist() {
Handler hand = new Handler() {
public void handleMessage(android.os.Message msg) {
super.handleMessage(msg);
try {
String Jstr = (((((String)msg.obj).replaceAll(", ", "\",\"")) .replaceAll("=", "\":\"")).replace("{", "{\"")) .replace("}", "\"}");

JSONObject Jobj=new JSONObject(Jstr);
list.add("请选择");
for(int i=1;i<Jobj.length()+1;i++){
list.add(Jobj.getString("tname"+i));//这里是正常的,确实正确赋值了
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
ThreadPoolUtils.execute(new HttpPostThread(hand,
Config.SERVER_URL+Config.ACTION_Clubinfo,"viewAllt",null,null));
}
}
...全文
1322 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
FainSheeg 2019-04-23
  • 打赏
  • 举报
回复
getlist();
//tv.setText(list.get(1));这里异常,说list.size=0

如3L所说你的getlist();是异步的,你调用之后马上就会执行下一句,并不会等待getlist完成,所以必然size=0
ymlvtimi 2019-04-22
  • 打赏
  • 举报
回复
你这相当于异步请求数据然后更新,那么list一开始肯定是空的,只有当你获取到数据后才有值
ymlvtimi 2018-09-12
  • 打赏
  • 举报
回复
两个方面检查一下,亲测有效。 1、将spinner高度设为wrap_content,原因:可能是你引用的布局高度高于spinner,造成不展示,我的是这样 2、在你引用的布局的跟布局位置写上:android:descendantFocusability="blocksDescendants",原因:spinner引用的根布局里的子布局获取了焦点,使得外面点击无法响应 我今天刚好也遇到了这个问题,亲测有效,你试试
sgf012112130 2016-09-14
  • 打赏
  • 举报
回复
问题解决没,我也遇到同样的问题了

80,471

社区成员

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

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