Java notifyItemChanged(i)在Android上崩溃
我正在尝试更新我的RecyclerView中的单个文本视图。我尝试使用mAdapter.notifyItemChanged(1);但这会使应用程序崩溃,我不知道为什么。调用mNumbersList.setAdapter(mAdapter);很好 这是我的适配器:Java notifyItemChanged(i)在Android上崩溃,java,android,Java,Android,我正在尝试更新我的RecyclerView中的单个文本视图。我尝试使用mAdapter.notifyItemChanged(1);但这会使应用程序崩溃,我不知道为什么。调用mNumbersList.setAdapter(mAdapter);很好 这是我的适配器: public class GreenAdapter extends RecyclerView.Adapter<GreenAdapter.NumberViewHolder> { private final String TA
public class GreenAdapter extends RecyclerView.Adapter<GreenAdapter.NumberViewHolder> {
private final String TAG = GreenAdapter.class.getSimpleName();
private int mNumberItems;
public GreenAdapter(int numberOfItems) {
mNumberItems = numberOfItems;
}
@Override
public NumberViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
Context context = viewGroup.getContext();
int layoutIdForListItem;
if (viewType==1) { layoutIdForListItem = R.layout.first; } else { layoutIdForListItem = R.layout.number_list_item; }
LayoutInflater inflater = LayoutInflater.from(context);
boolean shouldAttachToParentImmediately = false;
View view = inflater.inflate(layoutIdForListItem, viewGroup, shouldAttachToParentImmediately);
NumberViewHolder viewHolder = new NumberViewHolder(view);
return viewHolder;
}
@Override
public int getItemViewType(int position) {
int First;
switch (position) {
case 0: First=1;
break;
default:
First = 0;
}
return First;
}
@Override
public void onBindViewHolder(NumberViewHolder holder, int position) {
Log.d(TAG, "#" + position);
holder.bind(position);
}
@Override
public int getItemCount() {
return mNumberItems;
}
class NumberViewHolder extends RecyclerView.ViewHolder {
TextView listItemNumberView;
public NumberViewHolder(View itemView) {
super(itemView);
listItemNumberView = (TextView) itemView.findViewById(R.id.TV1);
}
void bind(int listIndex) {
//String[] messages = getResources().getStringArray(R.array.messageArray);
//listItemNumberView.setText(messages[listIndex]);
switch (listIndex) {
case 0: if (setStatusError) {Status="Cannot connect to eve-central";} listItemNumberView.setText(Status);
break;
case 1: listItemNumberView.setText(Buy[listIndex-1]+" "+Sell[listIndex-1]);
break;
case 2: listItemNumberView.setText(Buy[listIndex-1]+" "+Sell[listIndex-1]);
break;
default:listItemNumberView.setText(String.valueOf(listIndex));
}
}
}
}
公共类GreenAdapter扩展了RecyclerView.Adapter{
私有最终字符串标记=GreenAdapter.class.getSimpleName();
私人物品;
公共绿色适配器(int numberOfItems){
mNumberItems=numberOfItems;
}
@凌驾
public NumberViewHolder onCreateViewHolder(视图组视图组,int-viewType){
Context=viewGroup.getContext();
int layoutIdForListItem;
如果(viewType==1){layoutIdForListItem=R.layout.first;}否则{layoutIdForListItem=R.layout.number_列表项;}
LayoutFlater充气机=LayoutFlater.from(上下文);
布尔值shouldAttachToparentInstallent=false;
视图=充气机。充气(布局用于列表项、视图组,应立即附加到选项);
NumberViewHolder=新的NumberViewHolder(视图);
返回视图持有者;
}
@凌驾
public int getItemViewType(int位置){
int优先;
开关(位置){
案例0:第一个=1;
打破
违约:
第一个=0;
}
先返回;
}
@凌驾
BindViewHolder上的公共无效(数字文件夹持有人,内部位置){
Log.d(标记“#”+位置);
固定器。绑定(位置);
}
@凌驾
public int getItemCount(){
归还物品;
}
类NumberViewHolder扩展了RecyclerView.ViewHolder{
文本视图listItemNumberView;
public NumberViewHolder(查看项目视图){
超级(项目视图);
listItemNumberView=(TextView)itemView.findViewById(R.id.TV1);
}
无效绑定(int-listIndex){
//String[]messages=getResources().getStringArray(R.array.messageArray);
//listItemNumberView.setText(消息[listIndex]);
开关(列表索引){
案例0:if(setStatusError){Status=“无法连接到eve中心”}listItemNumberView.setText(状态);
打破
案例1:listItemNumberView.setText(买入[listIndex-1]+“”+卖出[listIndex-1]);
打破
案例2:listItemNumberView.setText(买入[listIndex-1]+“”+卖出[listIndex-1]);
打破
默认值:listItemNumberView.setText(String.valueOf(listIndex));
}
}
}
}
编辑:别担心我很愚蠢。我有一个处理程序可以这样做,但在调用RecyclerView之前它已经启动了…发布错误日志@向导谢谢,我已经找到问题了。