求救啊,为什么会有空指针异常.RecyclerView$LayoutManager.onMeasure

peiwx 2017-01-19 10:36:31
RecyclerView出现下面的问题,哪个大神能帮我一下。




01-19 10:07:04.777 32564-32564/com.onlyu.peiwenxin.test E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.onlyu.peiwenxin.test, PID: 32564
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView$LayoutManager.onMeasure(android.support.v7.widget.RecyclerView$Recycler, android.support.v7.widget.RecyclerView$State, int, int)' on a null object reference
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1764)
at android.view.View.measure(View.java:17555)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5536)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17555)。。。。。。。。。(太长就不写了)



Activity文件:
public class MainActivity extends AppCompatActivity {

private RecyclerView recyclerView;
private SwipeRefreshLayout swipeRefreshLayout;
private MyAdapter myAdapter;
private List<Customer> mdata;
private HttpHelper httpHelper;
private LinearLayoutManager linearLayoutManager;
private String url = "http://172.21.128.1:8081/customer/getCustomer";

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

getu();

}

private void initView() {
recyclerView = (RecyclerView) findViewById(R.id.recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
myAdapter = new MyAdapter(mdata, this);

recyclerView.setAdapter(myAdapter);

}

public void getu() {

URLHelp urlHelp = URLHelp.getURLHelp();
urlHelp.doGet(url);
urlHelp.setDataCallback(new URLHelp.DataCallback() {
@Override
public void callBackByTel(List<Customer> data) {
mdata = data;
initView();
}
});

}
}

URLHelp:

public class URLHelp {
private static URLHelp urlHelp;
private static Handler handler;
private DataCallback dataCallback;

private URLHelp(){
handler = new Handler(Looper.getMainLooper());
}
public synchronized static URLHelp getURLHelp(){
if (urlHelp ==null){
return urlHelp = new URLHelp();
}
return urlHelp;
}

public void setDataCallback(DataCallback dataCallback) {
this.dataCallback = dataCallback;
}
public void doGet(final String str_url){

new Thread(new Runnable() {
@Override
public void run() {
InputStreamReader isr = null;
BufferedReader br=null;
URL url = null;
try {
url= new URL(str_url);
isr=new InputStreamReader(url.openStream());
br = new BufferedReader(isr);
StringBuffer json = new StringBuffer();
String str = null;
while ((str=br.readLine())!=null){
json.append(str);
}
Log.e("success",json.toString());
List<Customer> mdata = null;
try {
mdata = GsonUtils.fromJsonArray(json.toString(), Customer.class);
} catch (Exception e) {
e.printStackTrace();
}
qucallBackByTel(mdata);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
if (isr!=null){
try {
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (br!=null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}).start();

}
public interface DataCallback {
public void callBackByTel(List<Customer> mdata);

}

private void qucallBackByTel(final List<Customer> mdata) {
handler.post(new Runnable() {

@Override
public void run() {
dataCallback.callBackByTel(mdata);
}
});
}

}
MyAdapter:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private List<Customer> data;
private Context context;

public MyAdapter(List<Customer> data, Context context) {
this.data = data;
this.context = context;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new MyViewHolder(LayoutInflater.from(context)
.inflate(R.layout.layout_item, parent, false));
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.id.setText(data.get(position).getId()+" s ");
holder.title.setText(data.get(position).getName());
holder.content.setText(data.get(position).getPassword());


}

@Override
public int getItemCount() {
return data.size();
}

class MyViewHolder extends RecyclerView.ViewHolder {

private TextView id;
private TextView title;
private TextView content;

public MyViewHolder(View itemView) {
super(itemView);
id = (TextView) itemView.findViewById(R.id.id);
title = (TextView) itemView.findViewById(R.id.title);
content = (TextView) itemView.findViewById(R.id.content);
}
}
}


layout文件
<?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:orientation="vertical"
android:id="@+id/activity_s"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context="com.onlyu.peiwenxin.test.Second.SActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="match_parent">

</android.support.v7.widget.RecyclerView>

</LinearLayout>




...全文
682 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
peiwx 2017-01-19
  • 打赏
  • 举报
回复
我发现是我依赖弄错了,版本低了,可是让我找了老半天。非常感谢你的回答。
引用 1 楼 u014448521 的回复:
recyclerView = (RecyclerView) findViewById(R.id.recycler); recyclerView.setLayoutManager(new LinearLayoutManager(this)); 这段放在getu();上面应该就没问题了
zyl9241 2017-01-19
  • 打赏
  • 举报
回复
recyclerView = (RecyclerView) findViewById(R.id.recycler); recyclerView.setLayoutManager(new LinearLayoutManager(this)); 这段放在getu();上面应该就没问题了
代码下载地址: https://pan.quark.cn/s/068306a56640 在交通运输科学范畴内,交通流量分配是探讨交通系统内交通负荷如何在各个道路路段间进行合理分配的核心议题。交通流分配技术主要应用于模拟和推演交通系统的运行状态,旨在为城市规划人员与交通工程师提供优化道路布局的参考,进而缓解交通拥堵现象,提升道路交通的整体效能。以下将对"交通流分配技术"进行深入阐述: 1. **全部或无分配(All-or-Nothing Distribution)** 全部或无分配是一种基础的交通流分配策略。该技术依据最短路径准则,预设所有从发源地(Origin)至目的地(Destination)的车辆都将选择路程最短的路线。倘若存在多条等长路径,则采用随机方式确定其中一条。此类方法未将交通拥堵因素纳入考量,因为一旦选定路径,便假定所有交通量将沿此路径通行,即便这可能导致部分路段出现超负荷状况。 2. **逐步分配(Progressive Assignment)** 逐步分配技术顾及了交通网络的动态特征。该算法通过逐步优化流量配置,力求使网络内行驶的总代价(诸如通行时间、距离等指标)最小化。运算过程始于初始的全部或无分配状态,随后逐步修正路径选择,直至网络达成稳定状态,即每次流量修正后,总代价的变动幅度不再明显。此方法更贴近现实交通场景,因为车辆依据即时路况选择最优路径。 3. **迭代平均分配(Iterative Average Distribution)** 迭代平均分配是一种对逐步分配技术的优化版本,其更侧重于实现网络流量的均衡化。在每一轮迭代过程中,算法不仅评估当前路径的优化程度,同时参考前一次迭代的流量配置。通过融入平均化理念,该方法能更有效地分散交通...
内容概要:本文围绕控制李雅普诺夫-屏障函数(CLBF)与分布式模型预测控制(DMPC)的融合方法展开研究,重点探讨其在复杂环境下多智能体系统(如无人机集群)路径规划与协同控制中的应用。研究通过Matlab代码实现了CLBF对系统稳定性的保障机制,并结合DMPC实现多智能体间的分布式优化决策,有效解决了动态障碍规避、任务协同与安全性约束等问题。文中还引入粒子群优化(PSO)和遗传算法(GA)等智能优化算法,进一步提升路径规划的效率与鲁棒性。该方法在水陆两栖无人机任务规划等实际场景中得到验证,展现出良好的应用前景。此外,文档配套提供了丰富的科研资源与仿真案例,覆盖电力系统、机器人、通信等多个交叉领域,体现了较强的技术延展性。; 适合人群:具备一定科研基础,从事自动化、控制理论与控制工程、机器人学、航空航天、电力系统及智能优化算法研究的研究生、科研人员与工程技术人员。; 使用场景及目标:① 实现复杂动态环境下多无人机系统的安全路径规划与协同控制;② 研究并应用CLBF与DMPC相结合的先进控制策略以提升系统稳定性与优化性能;③ 利用Matlab进行算法建模、仿真验证与科研复现,推动在智能控制、分布式优化等方向的学术研究与技术创新。; 阅读建议:建议读者结合文中的Matlab代码与具体仿真案例进行动手实践,深入理解CLBF的稳定性构造原理与DMPC的分布式优化机制,重点关注多智能体协同中的约束处理与通信拓扑设计,并参考文档中提供的其他优化算法与应用场景,拓展研究思路,适用于论文复现、课题开发与科研创新。
下载代码方式:https://pan.quark.cn/s/bd3a18d58376 依据所提供的文档资料,可以归纳出以下核心知识点: 1. DSPACE安装概述: DSPACE软件作为一个用于实时计算与模拟的工具,通常被应用于控制系统的构建与测试。其安装流程可能相对繁复,包含多个环节,涵盖了操作系统环境的配置、MATLAB版本的核查、编译器的部署以及DSPACE软件自身的部署。 2. 系统环境要求: - 需要部署Windows 7的旗舰版、企业版或专业版,并且要求系统版本至少达到SP1。 3. MATLAB版本兼容性: - 必须核实所采用的MATLAB版本至少为2015a,涵盖2015a、2015b、2016a、2016b等版本,以此保障与DSPACE的兼容状态。 4. .NET Framework 4.0平台部署: - 需要以管理员身份部署.NET Framework 4.0平台。 - 若系统中已存在更高版本的.NET Framework,则必须先行移除,再进行4.0版本的部署。 - 安装期间应遵循默认配置,确保部署准确无误。 5. MEX编译器部署: - 在部署MEX编译器之前,务必确认.NET Framework 4.0平台已完成部署。 - 部署期间若遭遇失败,需卸载Microsoft Visual C++ 2010的相关组件后,再次尝试部署。 - 部署完成后,需要在MATLAB命令窗口中输入“mex-setup”指令进行验证,以确认编译器部署成功。 6. DSPACE软件部署: - 首先部署DSPACE软件包中的disk1,通常是通过执行安装程序dSPACE_MasterSetup,并遵循安装向导的指引进行。 - 部署期间可能提示重启计算机,应依照...

80,488

社区成员

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

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