- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我尝试使用两种类型的 View 和两种类型的 ViewHolrdes,但收到错误:
java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6705)
at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5210)
at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4368)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)
at android.view.Choreographer.doCallbacks(Choreographer.java:579)
at android.view.Choreographer.doFrame(Choreographer.java:547)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5371)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
这是我的适配器:
public class FriendsListAdapterFromKesh extends ArrayAdapter<FriendListEntryItem> {
List<FriendListEntryItem> friends;
List<FriendListEntryItem> friendsWithoutPoints;
Context context;
private LayoutInflater inflater;
private LayoutInflater mLayoutInflater;
private static String ROOT_DIRECTORY_PATH = Environment.getExternalStorageDirectory() + File.separator + ".SleepKeeker/Photos old";
FriendsTab friendsTab;
public FriendsListAdapterFromKesh(Context context, final List<FriendListEntryItem> friends, final List<FriendListEntryItem> friendsWithoutPoints) {
super(context, 0);
this.context = context;
inflater = LayoutInflater.from(context);
this.friendsWithoutPoints = friendsWithoutPoints;
this.friends = friends;
friendsTab = new FriendsTab();
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void updateList(List<FriendListEntryItem> newlist1, List<FriendListEntryItem> newlist2) {
friends.clear();
friends.addAll(newlist1);
friendsWithoutPoints.clear();
friendsWithoutPoints.addAll(newlist2);
this.notifyDataSetChanged();
}
public List<FriendListEntryItem> getFriends() {
return friends;
}
@Override
public int getCount() {
return friends.size() + friendsWithoutPoints.size();
}
public String getIdSocTypeName(int position) {
if (friends == null || position + 1 >= friends.size()) {
return "";
}
FriendListEntryItem ei = friends.get(position - 1);
return ei.userId + "," + ei.socType + "," + ei.name;
}
static class ViewHolder1 {
public ImageView image = null;
public TextView title = null;
public TextView subtitle = null;
}
static class ViewHolder2 {
public ImageView image;
public TextView title;
public TypefacedButton button;
}
@Override
public int getItemViewType(int pos) {
if (pos < friends.size())
return 1;
return 2;
}
//@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int viewType = getItemViewType(position);
ViewHolder1 viewHolder1 = null;
ViewHolder2 viewHolder2 = null;
if (convertView == null) {
if (viewType == 1) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_frnds_item_with_points, parent, false);
viewHolder1 = new ViewHolder1();
viewHolder1.title = (TextView) convertView.findViewById(R.id.list_item_title_friend);
viewHolder1.image = (ImageView) convertView.findViewById(R.id.imageFriendAva);
viewHolder1.subtitle = (TextView) convertView.findViewById(R.id.list_item_friend_woke_time);
convertView.setTag(viewHolder1);
} else {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_frnds_item_without_points, parent, false);
viewHolder2 = new ViewHolder2();
viewHolder2.title = (TextView) convertView.findViewById(R.id.list_item_title_friend);
viewHolder2.image = (ImageView) convertView.findViewById(R.id.imageFriendAva);
viewHolder2.button = (TypefacedButton) convertView.findViewById(R.id.inviteButton);
viewHolder2.button.setClickListner();
convertView.setTag(viewHolder2);
}
} else {
if (viewType == 1) {
viewHolder1 = (ViewHolder1) convertView.getTag();
} else {
viewHolder2 = (ViewHolder2) convertView.getTag();
}
}
if (viewType == 1) {
final FriendListEntryItem ei = friends.get(position);
viewHolder1.title.setText(ei.name);
viewHolder1.subtitle.setText(ei.wokeTime);
File picture = findPicture(ei.name);
if (picture != null && picture.exists()) {
Picasso.with(context).load("file://" + picture.getAbsolutePath()).fit().centerCrop().into(viewHolder1.image);
}
} else {
final FriendListEntryItem ei2 = friendsWithoutPoints.get(position - friends.size());
viewHolder2.title.setText(ei2.name);
viewHolder2.button.setFriendItem(ei2);
File picture = findPicture(ei2.name);
if (picture != null && picture.exists()) {
Picasso.with(context).load("file://" + picture.getAbsolutePath()).fit().centerCrop().into(viewHolder2.image);
}
}
return convertView;
}
@Override
public int getViewTypeCount() {
return 2;
}
private File findPicture(String name) {
File root = new File(ROOT_DIRECTORY_PATH);
if (root!= null)
{
File[] files = root.listFiles();
if (files == null)
return null;
for (int i = 0; i<files.length; i++) {
Log.d("qedsds", "" + files[i].getName());
if (files[i].getName().contains(name))
return files[i];
}
}
return null;
}
}
滚动列表时出现错误。但我不明白为什么。我已经花了很多时间来解决这个问题,但无济于事
最佳答案
替换
@Override
public int getItemViewType(int pos) {
if (pos < friends.size())
return 1;
return 2;
}
由
@Override
public int getItemViewType(int pos) {
if (pos < friends.size())
return 0;
return 1;
}
来自 the Adapter documentation for the method getItemViewType
(我的重点):
Returns
An integer representing the type of View. Two views should share the same type if one can be converted to the other in getView(int, View, ViewGroup). Note: Integers must be in the range 0 to getViewTypeCount() - 1. IGNORE_ITEM_VIEW_TYPE can also be returned.
此时,您将返回 View 类型的值 1 和 2。您需要返回值 0 和 1 来满足粗体条件。
关于android - ViewHolder ArrayIndexOutOfBoundsException : length=2; index=2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28387892/
我创建了一个程序,可以将 10 个长整型数组转换为“电话号码”格式。例如这样:Solution.createPhoneNumber(new int[] {1, 2, 3, 4, 5, 6, 7, 8,
我正在将一个 csv 的每一行与另一个 csv 的每一行进行比较以查找匹配项。然后,我需要添加第二个 csv 中的一些元素和第一个 csv 中的一些元素,并将其写入新文件。它适用于 csv 的第一行,
我正在尝试解析一个字符串以获得 3 个整数,但我有一个强制关闭并且 LogCat 显示:ArrayIndexOutOfBoundExceptions。 这是我的代码的相关部分: dateMod
我已经创建了以下模式来表示用户和一组线程之间的关联,这些线程按他们的最后一条消息排序(用户已经阅读了哪些线程,哪些没有): CREATE TABLE table(user_id bigint, mes
我读取一个文件并将其添加到列表中,然后读取列表并拆分字符串并进行比较并对其进行处理。 我得到这个异常(exception): Exception in thread "main" java.lang.
使用以下代码时,我偶尔会遇到数组索引越界异常。任何线索?数组的大小始终约为 29-30。 logger.info("devicetripmessageinfo size :{}",deviceMess
我遇到了一个问题,但我没有任何线索来解决它! 问题很简单,我从 XSD 文件生成 JAXB 类。 (一个真正复杂的)。但是当编码发生时,我得到一个数组索引超出范围:[在此处插入随机负数] ja
嘿,stackoverflow 社区已经在这个程序上工作了几天,并且被这个错误困扰了一段时间,无法克服它。想知道是否有人可以提供有关正在发生的事情的见解。感谢大家的回复。 这是我运行程序时的输出: 2
我正在尝试制作一个简单的扫雷器,在 n*n 板上埋下 n*n/3 个地雷。地雷用*标记,空格用0标记。(它还不能作为游戏运行:我正在尝试制作扫雷的“答卷”)请注意,我还没有使用过任何有目的的方法。 我
我遇到了这篇文章中描述的类似问题。那里没有答案 - android intro screen error when add to 8 screen, but not error if 4 screen
我在第 66 行遇到错误 c[rowA][colB] = c[rowA][colB] + a[rowA][colA]*b[colA][colB];。我手动检查了索引,只是无法找出索引出错的地方。非常感
我在项目中使用 MessageDigest 计算 md5 签名,但在性能测试期间它抛出 ArrayIndexOutOfBoundsException。 我发现一些帖子表明这是因为 MessageDig
每当我运行代码时,它都会显示线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 0。我确保我的值(value)没有被超出,但它仍然这么说。你们
因此,我尝试按/、- 和空格分割字符串输入,并且在 dateConversion 方法中,我尝试调用字符串数组中的第三项(称为 terms)。如果我的数组只有 2 个元素,我会收到一个错误,我明白原因
这个问题已经有答案了: What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? (25 个回答)
这个问题已经有答案了: What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? (25 个回答)
我在 RegexReverseWords.reverseWords(第 23 行)和 RegexReverseWords.main(第 7 行)的 java.lang.ArrayIndexOutOfB
这个问题已经有答案了: How can I avoid ArrayIndexOutOfBoundsException or IndexOutOfBoundsException? [duplicate]
由于某种原因,我收到 ArrayIndexOutOfBoundsException 错误,我没有尝试访问数组的任何元素,我想做的就是设置大小,并通过引用传递 i.getRGB()。 /* * To
我不知道错误在哪里(插入表)。这是我的代码片段(插入开放寻址哈希表)。线性和双寻址都很好,但是这个(二次函数寻址)就出了问题 Exception in thread "main" java.lang.
我是一名优秀的程序员,十分优秀!