我正在使用来自 here 的固定部分 ListView 滚动后出现以下错误,
07-31 17:52:46.640: E/InputEventReceiver(25288): Exception dispatching input event.
07-31 17:52:46.657: E/AndroidRuntime(25288): FATAL EXCEPTION: main
07-31 17:52:46.657: E/AndroidRuntime(25288): java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6916)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5442)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3310)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.widget.AbsListView.onTouchEvent(AbsListView.java:3654)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.View.dispatchTouchEvent(View.java:7143)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2238)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1935)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2244)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1949)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2244)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1949)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2244)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1949)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2244)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1949)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2244)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1949)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2244)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1949)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2244)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1949)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2244)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1949)
07-31 17:52:46.657: E/AndroidRuntime(25288): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1938)
07-31 17:52:46.657: E/AndroidRuntime(25288): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1392)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.app.Activity.dispatchTouchEvent(Activity.java:2408)
07-31 17:52:46.657: E/AndroidRuntime(25288): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1886)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.View.dispatchPointerEvent(View.java:7323)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3560)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3490)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4637)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4597)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4749)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:163)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4717)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:4771)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:747)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.Choreographer.doCallbacks(Choreographer.java:567)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.Choreographer.doFrame(Choreographer.java:534)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:733)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.os.Handler.handleCallback(Handler.java:615)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.os.Handler.dispatchMessage(Handler.java:92)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.os.Looper.loop(Looper.java:153)
07-31 17:52:46.657: E/AndroidRuntime(25288): at android.app.ActivityThread.main(ActivityThread.java:5034)
07-31 17:52:46.657: E/AndroidRuntime(25288): at java.lang.reflect.Method.invokeNative(Native Method)
07-31 17:52:46.657: E/AndroidRuntime(25288): at java.lang.reflect.Method.invoke(Method.java:511)
07-31 17:52:46.657: E/AndroidRuntime(25288): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
07-31 17:52:46.657: E/AndroidRuntime(25288): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
07-31 17:52:46.657: E/AndroidRuntime(25288): at dalvik.system.NativeStart.main(Native Method)
package com.benego.Fragment;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.text.AndroidCharacter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.benego.AppCache;
import com.benego.MainActivity;
import com.benego.PinnedSectionListView.PinnedSectionListAdapter;
import com.benego.R;
import com.benego.Entity.LocalPhraseInfo;
import com.benego.Model.LocalPhraseModel;
public class PhraseResultFragment extends BaseFragment {
private String CategoryID = null;
//private String CategoryName = null;
public final String SOURCE_HOME = "home";
public final String SOURCE_NEARBY_VENUE = "nbv";
public final String SOURCE_NEARBY_SUB_CATEGORY = "nbsc";
private LocalPhraseResultAdapter adapter = null;
private List<LocalPhraseInfo> phrases = null;
public String getBundleString(String key, String defaultValue) {
if (getArguments().containsKey(key))
return getArguments().getString(key);
else
return defaultValue;
}
/**
* When creating, retrieve this instance's number from its arguments.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.phraseresult_fragment, container,
false);
//View v = super.onCreateView(inflater, container, savedInstanceState);
SearchFragment search_fragment = (SearchFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.phraseresultsearchfragment);
search_fragment.resultFragmemt = this;
LocalPhraseModel model = new LocalPhraseModel();
phrases = null;
String fromPage = getBundleString("from", SOURCE_HOME);
if (fromPage == SOURCE_HOME)
{
CategoryID = getBundleString("CategoryID", "all");
//CategoryName = getArguments().getString("CategoryName", "All");
search_fragment.categoryId = CategoryID;
phrases = model.GetPhrases(CategoryID, null);
}
else if (fromPage == SOURCE_NEARBY_SUB_CATEGORY)
{
String fsSubCategoryID = getBundleString("SubCategoryID", "all");
search_fragment.subCategoryId = fsSubCategoryID;
phrases = model.GetPhrasesBySubCategoryID(fsSubCategoryID, null);
}
else if (fromPage == SOURCE_NEARBY_VENUE)
{
String[] subCategoryIds = getArguments().getStringArray("SubCategoryIDs");
search_fragment.subCategoryIds = subCategoryIds;
phrases = model.GetPhrasesBySubCategoryIDs(subCategoryIds, null);
}
ListView listView = (ListView) v.findViewById(android.R.id.list);
adapter = new LocalPhraseResultAdapter(getActivity().getApplicationContext(), phrases);
listView.setAdapter(adapter);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public void onDestroyView() {
super.onDestroyView();
try {
Fragment fragment = getActivity().getSupportFragmentManager().findFragmentById(R.id.phraseresultsearchfragment);
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment);
ft.commit();
}
catch (Exception e) {
}
}
public void PlayAudio(int phraseID){
//set up MediaPlayer
try {
LocalPhraseModel model = new LocalPhraseModel();
byte[] audio = model.GetAudio(phraseID);
if (audio != null)
{
File tempMp3 = File.createTempFile(String.valueOf(phraseID), ".mp3", getActivity().getCacheDir());
tempMp3.deleteOnExit();
FileOutputStream fos = new FileOutputStream(tempMp3);
fos.write(audio);
fos.close();
final FileInputStream fs = new FileInputStream(tempMp3);
FileDescriptor fd = fs.getFD();
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(fd);
mp.prepare();
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
try {
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void RefreshView(List<LocalPhraseInfo> results)
{
this.adapter.setListData(results);
}
public class LocalPhraseResultAdapter extends BaseAdapter implements PinnedSectionListAdapter {
private Context mContext;
private List<LocalPhraseInfo> _results = null;
public LocalPhraseResultAdapter(Context c, List<LocalPhraseInfo> phrases) {
mContext = c;
this.setResults(phrases);
}
public int getCount() {
int size = this._results.size();
return size;
}
public Object getItem(int position) {
return _results.get(position);
}
public long getItemId(int position) {
return position;
}
private void setListData( List<LocalPhraseInfo> newListData ) {
this.setResults(newListData);
notifyDataSetChanged();
}//met
public View getView(int position, View convertView, ViewGroup parent) {
View cView;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
cView = LayoutInflater.from(mContext).inflate(
R.layout.phraseresult_item, null);
} else {
cView = convertView;
}
LocalPhraseInfo pInfo = _results.get(position);
cView.setTag(pInfo);
if (pInfo.getPhraseID() > 0)
{
cView.findViewById(R.id.phraseresult_row).setVisibility(View.VISIBLE);
cView.findViewById(R.id.phraseresult_section).setVisibility(View.GONE);
cView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LocalPhraseInfo pInfo = (LocalPhraseInfo)v.getTag();
PlayAudio(pInfo.getPhraseID());
}
});
TextView txtNativeView = (TextView) cView.findViewById(R.id.nativePhraseView);
TextView txtTranslationView = (TextView) cView.findViewById(R.id.translationPhraseView);
txtNativeView.setText(pInfo.getNativePhrase());
txtTranslationView.setText(pInfo.getTranslationPhrase());
ImageView sv = (ImageView)cView.findViewById(R.id.phraseSoundIcon);
if (pInfo.getIsSoundClipExists())
sv.setVisibility(View.VISIBLE);
ImageButton detailBtn = (ImageButton)cView.findViewById(R.id.btnphraseDetail);
if (pInfo.getHasRelatedPhrases() || pInfo.getIsRootPhrase())
{
detailBtn.setVisibility(View.VISIBLE);
detailBtn.setTag(pInfo);
detailBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LocalPhraseInfo pInfo = (LocalPhraseInfo)v.getTag();
Bundle args = new Bundle();
args.putString("from", "home");
args.putSerializable("Phrase", pInfo);
MainActivity mainActivity = (MainActivity)getActivity();
mainActivity.addFragment(mainActivity.LOCAL_TAB, PhraseDetailFragment.class, args);
}
});
}
}
else
{
cView.findViewById(R.id.phraseresult_row).setVisibility(View.GONE);
cView.findViewById(R.id.phraseresult_section).setVisibility(View.VISIBLE);
TextView txtSectionView = (TextView)cView.findViewById(R.id.phraseresult_section_text);
txtSectionView.setText(pInfo.getSubCategoryName());
}
return cView;
}
@Override public int getViewTypeCount() {
return 2;
}
@Override public int getItemViewType(int position) {
LocalPhraseInfo info = (LocalPhraseInfo)getItem(position);
if (info.getPhraseID() > 0)
return 2;
else
return 1;
}
@Override public boolean isItemViewTypePinned(int viewType) {
return viewType == 1;
}
private void setResults(List<LocalPhraseInfo> results)
{
List<LocalPhraseInfo> sectioned = new ArrayList<LocalPhraseInfo>();
String key = null;
Iterator<LocalPhraseInfo> localIterator = results.iterator();
while (localIterator.hasNext()) {
LocalPhraseInfo info = localIterator.next();
if (key == null || !key.endsWith(info.getSubCategoryName()))
{
key = info.getSubCategoryName();
sectioned.add(this.getSectionPhraseInfo(info));
}
sectioned.add(info);
}
this._results = sectioned;
}
private LocalPhraseInfo getSectionPhraseInfo(LocalPhraseInfo phrase)
{
LocalPhraseInfo info = new LocalPhraseInfo();
info.setSubCategoryID(phrase.getSubCategoryID());
info.setSubCategoryName(phrase.getSubCategoryName());
return info;
}
}
}
请帮帮我。最近两天我一直在挣扎。
最佳答案
如果您仔细阅读 getItemViewType 方法文档,它会说:
Integers must be in the range 0 to getViewTypeCount() - 1
在你的例子中,在 [0, 1] 范围内
关于android - 在 android 中获取 java.lang.ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17970419/
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url
我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
如何在Ruby中获取BasicObject实例的类名?例如,假设我有这个:classMyObjectSystem我怎样才能使这段代码成功?编辑:我发现Object的实例方法class被定义为returnrb_class_real(CLASS_OF(obj));。有什么方法可以从Ruby中使用它? 最佳答案 我花了一些时间研究irb并想出了这个:classBasicObjectdefclassklass=class这将为任何从BasicObject继承的对象提供一个#class您可以调用的方法。编辑评论中要求的进一步解释:假设你有对象