使用EndlessAdapter与SimpleAdapter NullPointerException异常
-
22-09-2019 - |
题
我使用从与SimpleAdapter commonsguy EndlessAdapter。当我做没有问题向下滚动,但我有一个NullPointerException当我做一个向上滚动,我可以加载数据。问题是在该方法
@Override
public View getView(int position, View convertView,ViewGroup parent) {
return wrapped.getView(position, convertView, parent);
}
从类AdapterWrapper
。
要wrapped.getView(position, convertView,parent)
调用引发异常,我不知道为什么。
这是我的执行EndlessAdapter
的:
//Inner class in SearchTextActivity
class DemoAdapter extends EndlessAdapter {
private RotateAnimation rotate = null;
DemoAdapter(ArrayList<HashMap<String, String>> result) {
super(new SimpleAdapter(SearchTracksActivity.this,
result,
R.layout.textlist_item,
PROJECTION_COLUMNS,
VIEW_MAPPINGS));
rotate = new RotateAnimation( 0f,
360f,
Animation.RELATIVE_TO_SELF,
0.5f,
Animation.RELATIVE_TO_SELF,
0.5f);
rotate.setDuration(600);
rotate.setRepeatMode(Animation.RESTART);
rotate.setRepeatCount(Animation.INFINITE);
}
@Override
protected View getPendingView(ViewGroup parent) {
View row=getLayoutInflater().inflate(R.layout.textlist_item, null);
View child=row.findViewById(R.id.title);
child.setVisibility(View.GONE);
child=row.findViewById(R.id.username);
child.setVisibility(View.GONE);
child=row.findViewById(R.id.throbber);
child.setVisibility(View.VISIBLE);
child.startAnimation(rotate);
return row;
}
@Override
@SuppressWarnings("unchecked")
protected void rebindPendingView(int position, View row) {
HashMap<String, String> res = (HashMap<String, String>)getWrappedAdapter().getItem(position);
View child=row.findViewById(R.id.title);
((TextView)child).setText(res.get("title"));
child.setVisibility(View.VISIBLE);
child=row.findViewById(R.id.username);
((TextView)child).setText(res.get("username"));
child.setVisibility(View.VISIBLE);
ImageView throbber=(ImageView)row.findViewById(R.id.throbber);
throbber.setVisibility(View.GONE);
throbber.clearAnimation();
}
boolean mFinal = true;
@Override
protected boolean cacheInBackground() {
EditText searchText = (EditText)findViewById(R.id.searchText);
String textToSearch = searchText.getText().toString();
Util.getSc().searchText(textToSearch , offset, limit, new ResultListener<ArrayList<Text>>() {
@Override
public void onError(Exception e) {
e.toString();
mFinal = false;
}
@Override
public void onSuccess(ArrayList<Text> result) {
if(result.size() == 0){
mFinal = false;
}else{
texts.addAll(result);
offset++;
}
}
});
return mFinal;
}
@Override
protected void appendCachedData() {
for(Text text : texts){
result.add(text.getMapValues());
}
texts.clear();
}
}
和我用这种方式:
public class SearchTextActivity extends AbstractListActivity {
private static final String[] PROJECTION_COLUMNS = new String[] {
TextStore.Text.TITLE,
TextStore.Text.USER_NAME};
private static final int[] VIEW_MAPPINGS = new int[] {
R.id.Text_title,
R.id.Text_username};
ArrayList<HashMap<String, String>> result;
static ArrayList<Text> texts;
static int offset = 0;
static int limit = 1;
@Override
void onAbstractCreate(Bundle savedInstance) {
setContentView(R.layout.search_tracks);
setupViews();
}
private void setupViews() {
ImageButton searchButton = (ImageButton)findViewById(R.id.searchButton);
updateView();
}
SimpleAdapter adapter;
void updateView(){
if(result == null) {
result = new ArrayList<HashMap<String, String>>();
}
if(tracks == null) {
texts = new ArrayList<Text>();
}
}
public void sendQuery(View v){
offset = 0;
texts.clear();
result.clear();
setListAdapter(new DemoAdapter(result));
}
}
有谁知道可能是什么问题?
解决方案
它是SimpleAdapter内部。
我想先摆脱EndlessAdapter
的开始,只是有你的清单上的SimpleAdapter
。
如果这样的作品,那么有可能是在路上EndlessAdapter
作品用它包裹适配器的错误 - 在这种情况下,我需要一个演示该错误的示例项目
如果该SimpleAdapter
没有EndlessAdapter
失败,你需要做更多的你是如何建立SimpleAdapter
调查。
不隶属于 StackOverflow