Fragment中setAdapter() ListView报空指针,几天没解决,求大神!!!

阿不阿 2014-04-04 09:38:52
在Fragment中使用ListView,测试了很久,实在不知道哪里有空指针的问题。以下是类源码:

package net.iwetao.order;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

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

import net.iwetao.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import net.iwetao.init.RedefineHttpRequest;

public class Order extends Fragment {

private ListView orderListView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.inflate(R.layout.index_order, container, false);
}

@Override
public void onActivityCreated(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
// 其他操作
String url = "http://www.91weida.com/androidTest.php";
HashMap<String,Object> param = new HashMap<String,Object>();
param.put("act","getOrder");
param.put("page",1);
try
{
this.getOrders(url,param);
}
catch(Exception e)
{
android.util.Log.i("sysEr",e.toString());
Toast.makeText(this.getActivity(),"服务器连接出错", Toast.LENGTH_SHORT).show();
}

//TextView orderList = (TextView)getActivity().findViewById(R.id.init_test);
/* 设置订单管理的监听事件 */
/*orderList.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}
});
*/
}

/*
* 获取服务器订单
* @param String url, HashMap<String,Object> data
* @void
*/
public void getOrders(String url,HashMap<String,Object> param) throws Exception
{
String data = RedefineHttpRequest.HttpPost(url, param); //取得服务器返回的json
JSONObject msg = new JSONObject(data);
int error = msg.getInt("error");
switch (error)
{
case 0: //返回正确
JSONArray arr = msg.getJSONArray("data");
if(arr.length()==0) //订单数组为空
{

}
else
{
List<HashMap<String,Object>> res = new ArrayList<HashMap<String,Object>>(); //定义订单集合数组
for(int i=0;i<arr.length();i++)
{
HashMap<String,Object> map = new HashMap<String,Object>();
JSONObject order = arr.getJSONObject(i); //取得每一个订单
map.put("order_id", order.getInt("order_id"));
map.put("goods_name",order.getString("goods_name"));
map.put("amount", order.getDouble("amount"));
res.add(map); //添加到集合数组
}
//res经过打印是绝对不为null的
SimpleAdapter adapter = new SimpleAdapter(this.getActivity(), res,R.layout.index_order,
new String[]{"order_id"},
new int[]{R.id.order_id}
);
android.util.Log.i("msg",""+res);
try
{
orderListView.setAdapter(adapter);
}
catch(Exception e)
{
android.util.Log.i("exception",e.toString()); //报空指针问题
}
}
break;
case 1: //返回错误
break;
case 2: //未登录
break;
}
}
}

弄了两天也没弄出来,求大神解救,万谢!!!
...全文
346 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你说的是对的 解决的不对。碎片中获取id应该在view中获得
阿不阿 2014-04-04
  • 打赏
  • 举报
回复
已经解决,需要的兄弟请点这里: http://blog.csdn.net/eclothy/article/details/22960715
阿不阿 2014-04-04
  • 打赏
  • 举报
回复
我个人感觉似乎是

private ListView orderListView;   
变量声明的问题,是不是需要对变量赋值之类的才能调用setAdapter()呢?

80,351

社区成员

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

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