喜马拉雅电台模块,大神们,我这个获取热词,为什么热词为什么图中两个都出现空指针呢?

package com.example.musicxima;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Context;
import android.graphics.Rect;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.example.musicxima.adapters.AlbumListAdapter;
import com.example.musicxima.base.BaseActivity;
import com.example.musicxima.interfaces.ISearchCallBack;
import com.example.musicxima.presenters.SearchPresenter;
import com.example.musicxima.utils.LogUtil;
import com.example.musicxima.views.FlowTextLayout;
import com.example.musicxima.views.UILoader;
import com.ximalaya.ting.android.opensdk.model.album.Album;
import com.ximalaya.ting.android.opensdk.model.word.HotWord;
import com.ximalaya.ting.android.opensdk.model.word.QueryResult;
import net.lucode.hackware.magicindicator.buildins.UIUtil;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static android.view.View.VISIBLE;
public class SearchActivity extends BaseActivity implements ISearchCallBack {
private static final String TAG = "SearchActivity";
private View mBackBtn;
private EditText mInput;
private TextView mSeachBtn;
private FrameLayout mSearchContainer;
private SearchPresenter mSearchPresenter;
private UILoader mContent;
private RecyclerView mResultListView;
private AlbumListAdapter mAlbumListAdapter;
private FlowTextLayout mFlowTextLayout;
private InputMethodManager mInputMethodManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
initView();
initPresenter();
initEvent();
}
private void initPresenter() {
//注册ui更新的接口
mSearchPresenter = SearchPresenter.getInstance();
mSearchPresenter.registerViewCallback(this);
//获取热词
mSearchPresenter.getHotWord();
}
private void initEvent() {
if (mFlowTextLayout != null) {
mFlowTextLayout.setClickListener(new FlowTextLayout.ItemClickListener() {
@Override
public void onItemClick(String text) {
Toast.makeText(SearchActivity.this, "点击了"+text, Toast.LENGTH_SHORT).show();
}
});
}
mContent.setOnRetryClickListener(new UILoader.onRetryClickListener() {
@Override
public void RetryClick() {
if (mSearchPresenter != null) {
mSearchPresenter.reSearch();
mContent.updateStatus(UILoader.UIstatus.LOADING);
}
}
});
mBackBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
mSeachBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//去执行搜索
String keyword = mInput.getText().toString().trim();
if (mSearchPresenter != null) {
mSearchPresenter.doSearch(keyword);
mContent.updateStatus(UILoader.UIstatus.LOADING);
}
}
});
mInput.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
LogUtil.d(TAG,"content"+s);
LogUtil.d(TAG,"content"+start);
LogUtil.d(TAG,"content"+before);
LogUtil.d(TAG,"content"+count);
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
private void initView() {
mInputMethodManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
mBackBtn = findViewById(R.id.search_back);
mInput = findViewById(R.id.search_input);
mSeachBtn = findViewById(R.id.search_txt_btn);
mSearchContainer = findViewById(R.id.search_container);
if (mContent==null) {
mContent = new UILoader(this) {
@Override
protected View getSuccessView(ViewGroup containner) {
return createSuccessView();
}
};
if (mContent.getParent() instanceof ViewGroup) {
((ViewGroup) mContent.getParent()).removeView(mContent);//不能重复添加
}
}
mSearchContainer.addView(mContent);
}
/**
* 创建数据请求成功的VIEW
* @return
* @param
*/
private View createSuccessView() {
View resultView = LayoutInflater.from(this).inflate(R.layout.search_result_layout, null);
mResultListView = resultView.findViewById(R.id.result_list_view);
//显示热词的
mFlowTextLayout = resultView.findViewById(R.id.recommend_hot_word_view);
//设置布局管理器
mResultListView.setLayoutManager(new LinearLayoutManager(this));
//设置适配器
mAlbumListAdapter = new AlbumListAdapter();
mResultListView.setAdapter(mAlbumListAdapter);
mResultListView.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
outRect.top = UIUtil.dip2px(view.getContext(),5);
outRect.bottom = UIUtil.dip2px(view.getContext(),5);
outRect.left = UIUtil.dip2px(view.getContext(),5);
outRect.right = UIUtil.dip2px(view.getContext(),5);
}
});
return resultView;
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mSearchPresenter != null) {
mSearchPresenter.unRegisterViewCallback(this);
mSearchPresenter = null;
}
}
@Override
public void onSearchResultLoaded(List<Album> result) {
/* if (mFlowTextLayout != null && mResultListView != null) {*/
mFlowTextLayout.setVisibility(View.GONE);
mResultListView.setVisibility(View.VISIBLE);
//隐藏键盘
InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(mInput.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
if (result != null) {
if (result.size() ==0) {
//数据为空
if (mContent != null) {
mContent.updateStatus(UILoader.UIstatus.EMPTY);
}
}else{
//如果数据bu1为空
mAlbumListAdapter.setData(result);
mContent.updateStatus(UILoader.UIstatus.SUCCESS);
}
}
}
@Override
public void onHotWordLoaded(List<HotWord> hotWordList) {
/*if (mFlowTextLayout != null && mResultListView != null){*/
mResultListView.setVisibility(View.GONE);
mFlowTextLayout.setVisibility(View.INVISIBLE);
if (mContent != null) {
mContent.updateStatus(UILoader.UIstatus.SUCCESS);
}
LogUtil.d(TAG, "hotwordList -- ---->size" + hotWordList.size());
List<String> hotwords = new ArrayList<>();
hotwords.clear();
for (HotWord hotWord : hotWordList) {
String searchword = hotWord.getSearchword();
hotwords.add(searchword);
}
Collections.sort(hotwords);
//更新ui
/*if (mFlowTextLayout != null) {*/
mFlowTextLayout.setTextContents(hotwords);
}
@Override
public void onLoadMoreResult(List<Album> result, boolean isOkay) {
}
@Override
public void onRecommendWordLoaded(List<QueryResult> keywordList) {
}
@Override
public void onError(int errorCode, String errorMessage) {
if (mContent != null) {
mContent.updateStatus(UILoader.UIstatus.NETWORK_ERROR);
}
}
}
你把这个
挪到前面,不就可以显示SuccessView了么?显示了SuccessView,不就有mResultListView么?
先理解再写吧,要不就是白写了。没有意义。
就初始化我换过位置,还是出现这个问题
空指针异常 呀,这种问题考虑一下时序吧。