NullPointerExceptionがSimpleAdapterでEndlessAdapterを使用して
-
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