我遇到问题并陷入困境。当我单击列表视图项时,我想更改背景色。我为此列表视图定制了适配器,我正在控制适配器上的项目点击。但是出现索引问题。
void loadData() //this method reusable. {
listViewProductCollect.setAdapter(null);
mOrderWithDetails = ProductCollectingListActivity.mOrderToSend;
listViewProductCollect.setAdapter(new AdapterCollectingOrdersDetail(mOrderWithDetails, this));
listViewProductCollect.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {
selectedIndex = i;// getting position for adapter.
在此getView方法中更改背景色。每个列表视图项的设计都是自定义可绘制的。 dataset.size =8。当我单击index = 4时,背景不会改变,但是,当我单击listview的第一个索引时,listview index = 4的背景也会改变。我尝试了许多解决方案,但无法解决。我可以帮忙吗?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
OrderDetail dataModel = getItem(position);
AdapterCollectingOrdersDetail.ViewHolder viewHolder;
final View result;
if (convertView == null) {
viewHolder = new AdapterCollectingOrdersDetail.ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.row_list_collecting_detail, parent, false);
int selectNew = ProductCollectingDetailActivity.selectedIndex;
if (selectNew >= 0 && selectNew <= dataSet.size()) {
if (counter == selectNew) {
convertView.getRootView().setBackgroundColor(R.drawable.row_selected_list_background);
ProductCollectingDetailActivity.selectedIndex = -1;
}
counter++;
}
尝试向代码中添加其他内容,并将背景色设置为其原始状态
@Override
public View getView(int position, View convertView, ViewGroup parent) {
OrderDetail dataModel = getItem(position);
AdapterCollectingOrdersDetail.ViewHolder viewHolder;
final View result;
if (convertView == null) {
viewHolder = new AdapterCollectingOrdersDetail.ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.row_list_collecting_detail, parent, false);
int selectNew = ProductCollectingDetailActivity.selectedIndex;
if (selectNew >= 0 && selectNew <= dataSet.size()) {
if (counter == selectNew) {
convertView.getRootView().setBackgroundColor(R.drawable.row_selected_list_background);
ProductCollectingDetailActivity.selectedIndex = -1;
}
else
{
//reset here the background color of the cell
}
counter++;
}