- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 recyclerView 并将数据加载为 arrayList。如果 arrayList 少于 7 个项目,则不会发生崩溃。
否则,我会遇到这个 fatal error :
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{3b1755be position=7 id=-1, oldPos=-1, pLpos:-1 no parent}
有人能帮忙吗?
诊断适配器.java
public class DiagnosticAdapter extends RecyclerView.Adapter<DiagnosticAdapter.ViewHolder> implements Filterable {
public static ArrayList<Diagnostic> diagnostics;
private ArrayList<Diagnostic> mFilteredDiagnosticArray;
public DiagnosticAdapter(ArrayList<Diagnostic> diagnostics) {
this.diagnostics = diagnostics;
}
@Override
public DiagnosticAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(DiagnosticAdapter.ViewHolder viewHolder, int i) {
viewHolder.parameter.setText(diagnostics.get(i).getParameter());
viewHolder.value.setText(diagnostics.get(i).getValue());
}
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
if (charString.isEmpty()) {
mFilteredDiagnosticArray = diagnostics;
} else {
ArrayList<Diagnostic> filteredList = new ArrayList<>();
for (Diagnostic diagnostic : diagnostics) {
if (diagnostic.getParameter().toLowerCase().contains(charString) || diagnostic.getValue().toLowerCase().contains(charString)) {
filteredList.add(diagnostic);
}
}
mFilteredDiagnosticArray = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = mFilteredDiagnosticArray;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
mFilteredDiagnosticArray = (ArrayList<Diagnostic>) filterResults.values;
notifyDataSetChanged();
}
};
}
@Override
public int getItemCount() {
return diagnostics.size();
}
}
ViewHolder.java
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView parameter, value;
public ViewHolder(View view) {
super(view);
parameter = (TextView)view.findViewById(R.id.parameter);
value = (TextView)view.findViewById(R.id.value);
}
}
Fragment1.java
public class Fragment1 extends Fragment {
private PtrClassicFrameLayout mPtrFrame;
private RecyclerView recyclerView;
private ArrayList<Diagnostic> data;
public static DiagnosticAdapter adapter;
private OkHttpClient client;
private Handler handler;
public static String constVar;
private String method;
public Fragment1() {
}
private Boolean mIsRefreshing = false;
private String ipAddress;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_1, container, false);
}
@Override
public void onViewCreated(final View view, @Nullable final Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView = (RecyclerView) view.findViewById(R.id.recycler_viewDiag);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new WrapContentLinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
Log.i("mIsRefreshing",mIsRefreshing.toString());
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
method = getArguments().getString("method");
Log.i("METHOD",method);
loadJSON();
}else{
}
}
private void loadJSON(){
// Log.i("Fragment1",ipAddress);
Retrofit retrofit = new Retrofit.Builder()
//.baseUrl("http://"+ipAddress+":8000")
.baseUrl("http://10.206.208.92"+":8000")
.addConverterFactory(GsonConverterFactory.create())
.build();
RequestInterface request = retrofit.create(RequestInterface.class);
Call<JSONResponse> call ;
switch (method){
case "identification":
call = request.getIdentification();
break;
case "memory":
call = request.getMemory();
break;
case "sysInfo":
call = request.getSysInfo();
break;
case "conditionalAccess":
call = request.getConditionalAccess();
break;
case "network":
call = request.getNetwork();
break;
case "software":
call = request.getSoftware();
break;
case "loader":
call = request.getLoader();
break;
default:
call = request.getJSON();
break;
}
call.enqueue(new Callback<JSONResponse>() {
@Override
public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {
JSONResponse jsonResponse = response.body();
switch (method){
case "identification":
data = new ArrayList<>(Arrays.asList(jsonResponse.getIdentification()));
break;
case "memory":
data = new ArrayList<>(Arrays.asList(jsonResponse.getMemory()));
break;
case "sysInfo":
data = new ArrayList<>(Arrays.asList(jsonResponse.getSysInfo()));
break;
case "conditionalAccess":
data = new ArrayList<>(Arrays.asList(jsonResponse.getConditionalAccess()));
break;
case "network":
data = new ArrayList<>(Arrays.asList(jsonResponse.getNetwork()));
break;
case "software":
data = new ArrayList<>(Arrays.asList(jsonResponse.getSoftware()));
break;
case "loader":
data = new ArrayList<>(Arrays.asList(jsonResponse.getLoader()));
break;
default:
data = new ArrayList<>(Arrays.asList(jsonResponse.getDiagnostics()));
break;
}
//data = new ArrayList<>(Arrays.asList(jsonResponse.getDiagnostics()));
//Toast.makeText(getContext(), data.size(), Toast.LENGTH_LONG).show();
adapter = new DiagnosticAdapter(data);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
mIsRefreshing = true;
Log.i("mIsRefreshing",mIsRefreshing.toString());
// mPtrFrame.refreshComplete();
}
@Override
public void onFailure(Call<JSONResponse> call, Throwable t) {
// mPtrFrame.refreshComplete();
try {
adapter.diagnostics.clear();
adapter.notifyDataSetChanged();
} catch (Exception e) {
Log.e("ERROR", "showProgressDialog", e);
}
Snackbar.make(getView(), "Unable to fetch json: " + t.getMessage(), Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
}
DemoActivity.java
public class DemoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpagerDemo);
// final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
SmartTabLayout viewPagerTab = (SmartTabLayout)
findViewById(R.id.viewpagertab);
TabsAdapter adapter = new TabsAdapter(getSupportFragmentManager());
adapter.addFrag(new Fragment1(), "memory");
adapter.addFrag(new Fragment1(), "identification");
adapter.addFrag(new Fragment1(), "loader");
viewPager.setAdapter(adapter);
viewPagerTab.setViewPager(viewPager);
}
}
TabsAdapter.java
public class TabsAdapter extends FragmentPagerAdapter {
private final List<android.support.v4.app.Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public TabsAdapter(FragmentManager fm) {
super(fm);
}
public void addFrag(android.support.v4.app.Fragment fragment, String title){
Bundle bundle = new Bundle();
bundle.putString("method", title);
fragment.setArguments(bundle);
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
最佳答案
您可以尝试在您的适配器中使用数据的副本吗?
private ArrayList<Diagnostic> diagnostics = new ArrayList<>();
public DiagnosticAdapter(ArrayList<Diagnostic> diagnostics) {
this.diagnostics.addAll(diagnostics);
}
像这样清除数据:
public void clearData() {
this.diagnostics.clear();
notifyDataSetChanged();
}
像这样设置新数据:
public void setData(List<Diagnostics> data) {
clearData();
this.diagnostics.addAll(data);
notifyDataSetChanged();
}
除了使用 notifyDataSetChanged()
,如果您想使用动画或获得更好的性能,您可以使用其他通知...函数。
希望这能奏效...
关于android - 索引越界异常 : Inconsistency detected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43461431/
我正在使用 xamarin 表单开发移动应用程序,是否可以检测 Android 中的滑动手势以进行屏幕截图或单击锁定屏幕或主屏幕? 如果可以通过 Objective C/swift/java 实现,那
我刚刚涉足计算机视觉领域,并试图揭开它的各种复杂性的神秘面纱。我正在尝试使用冲浪特征检测器来增强卡尔曼滤波器。但是我不明白在使用冲浪特征在检测到的帧上构造单应性和有界矩形后如何调用和使用卡尔曼方法。在
问题 我正在尝试使用 opencv2 来检测静止图像中的 PlayStation Move 运动 Controller 。为了增加球体和背景之间的对比度,我决定修改输入图像以自动缩放每个 channe
我正在制作一个 android 应用程序,它可以从从视频中捕获的图像帧中检测对象。 openCV中的示例应用只有实时检测的例子。 附加信息:-我正在使用 Haar 分类器 截至目前,我正在将捕获的帧存
我在我的测试应用程序中成功实现了 OpenCV 平方检测示例,但现在需要过滤输出,因为它非常困惑 - 还是我的代码错误? 我对论文的四个角点感兴趣,以减少偏斜(如 that)和进一步处理......
在我的应用程序中,我想对 UIImage 使用人脸检测,所以我使用库中的 CoreImage 构建(我知道 Vision Library 也是最新的人脸检测库。但它仅支持 ios 11.0 及以上)。
我的 Linux 3.0/glibc 2.13 应用程序因以下形式的错误而停止: *** glibc detected *** MYAPP: double free or corruption (fa
我正在尝试运行一个基本程序来检测用户是否安装了 window.ethereum。当我运行我的程序时,我得到“@metamask/detect-provider:无法检测到 window.ethereu
我正在使用 Haarcascades 检测人脸和眼睛。我的问题是,它像眼睛一样包围了许多盒子。我的语法是 face_cascade = cv2.CascadeClassifier('haarcasca
我如何检测用户在对话中点击“消息”? 如果 MessageViewController Controller 很紧凑并且用户向上滑动我如何检测到它? 我试过这些代表,但它不能正常工作 override
我在对象检测中使用 Microsoft 自定义视觉服务来提取需要的对象。我想做一个回归测试来比较结果。但是,我找不到一个地方可以导出带有用户通过 GUI 定义的边界框的训练图片。 模型训练是在 Mic
我对 chrome 进行了扩展。当我浏览到 https 下的网站时,我的链接仍在 http 下,我收到:“该站点使用 SSL,但 Google Chrome 检测到页面上存在高风险不安全内容或站点证书
我用的是JetBrains的Gogland工具来学习go语言,我安装成功了,但是打不开,现将报错列如下,有没有人遇到过这个问题?如能解决,将不胜感激。 错误: Java 运行时环境检测到 fatal
我想在 R 中评估和比较我的社区检测算法的结果。我的算法不允许重叠,并且有一些节点没有被处理。例如,对于 Zachary 空手道俱乐部,我有 1 个节点未处理。我找到了很多指标(NMI、ARI、Mod
是否有任何好的开源引擎来检测文本使用的语言,也许是概率度量?我可以在本地运行并且不查询 Google 或 Bing 的一个?我想在大约 1500 万页的 OCR 文本中检测每个页面的语言。 并非所有文
我正在开发一款 2D 游戏,其中包含高速射弹,这些射弹会撞击高速(并且可能旋转得非常快)的多边形目标对象。我一直在试验和寻找适合我的强大碰撞检测算法。 如果快速旋转不是一个因素(即 0 或慢速旋转),
我正在制作一款平台游戏,其中有玩家和一些 Prop 。为了检查碰撞,我使用了 matterjs collisionactive 函数: this.matter.world.on("collisiona
我已经习惯于使用矩形进行碰撞检测,现在我有点难住了。我正在处理类似菱形的形状,在过去的几个小时里,我一直在试图找出如何检查碰撞。 我尝试检查第一个对象的四个点是否在第二个对象的点内,但这只是一个框(我
最初,两个半径为 R1 和 R2 的非接触球体处于静止状态。 然后在时间 = 0 时分别给它们两个加速度 a1 和 a2。查明他们是否会接触。它们的初始位置分别表示为 (x1,y1,z1) 和 (x2
我目前正在学习使用 LWJGL 和 OpenGL 的 ThinMatrix 3d 游戏开发教程。我正在尝试在我的游戏中实现碰撞检测。我已经准备好检测 AABB 与 AABB 碰撞的代码,但似乎无法弄清
我是一名优秀的程序员,十分优秀!