0
我有一个列表视图有两个textviews和一个按钮。如果按钮被点击,则它变成“停止”按钮图像,并且如果另一行按钮被点击,则前一个按钮返回到“播放”按钮图像,并且新行按钮变成“停止”按钮图像。所有这些都为第2-3行工作。滚动后,它停止工作,并给我一个NullPointerException
。我猜它与listview的视图组回收有关。如果任何人都可以帮助我,这将会很棒。Android的Listview按钮点击
这里是代码为我的适配器的onclicklistener:
@Override
public View getView(final int pos, View ConvertView, ViewGroup parent) {
final MyViewHolder holder;
if (ConvertView == null){
ConvertView = layoutinflater.inflate(R.layout.row, parent, false);
holder = new MyViewHolder();
holder.plays = (ImageButton) ConvertView.findViewById(R.id.plays);
holder.plays.setFocusable(false);
holder.plays.setOnClickListener(this);
parents = parent;
}else{
holder = (MyViewHolder)ConvertView.getTag();
}
play = playdata.get(pos);
holder.posturl= play.getposturl();
holder.plays.setTag(pos);
ConvertView.setTag(holder);
if(mHighlightedPositions[pos]) {
holder.plays.setImageResource(R.drawable.ic_action_stop);
}else {
holder.plays.setImageResource(R.drawable.ic_action_play);
}
play = playdata.get(pos);
holder.play = play;
return ConvertView;
}
@Override
public void onClick(View view) {
int position = (Integer)view.getTag();
Log.d("clicked", "Button row pos click: " + position);
// Toggle background resource
LinearLayout layout = (LinearLayout)view.getParent();
ImageButton button = (ImageButton)layout.getChildAt(3);
if(initialposition!=-1)
{if(mHighlightedPositions[position]) {
button.setImageResource(R.drawable.ic_action_play);
mHighlightedPositions[position] = false;
}else {
button.setImageResource(R.drawable.ic_action_stop);
mHighlightedPositions[position] = true;
mHighlightedPositions[initialposition]=false;
LinearLayout parentlayout = (LinearLayout) parents.getChildAt(initialposition);
ImageButton btn = (ImageButton) parentlayout.getChildAt(3);
btn.setImageResource(R.drawable.ic_action_play);
}
}else {
button.setImageResource(R.drawable.ic_action_stop);
mHighlightedPositions[position] = true;
}
initialposition = position;
}
任何帮助表示赞赏!谢谢!
编辑:我得到的NullPointerException在此位:
LinearLayout parentlayout = (LinearLayout) parents.getChildAt(initialposition);
ImageButton btn = (ImageButton) parentlayout.getChildAt(3);
btn.setImageResource(R.drawable.ic_action_play);
而且,记录的NullPointerException异常,并滚动该parentlayout变成空时,它的。
是什么mHihglightedPositions和它在哪儿设置? – zgc7009