2016-05-18 14 views
0

即时通过使用波纹管代码中选择的ListView项(这是基于CheckedTextView)机器人:取消选择所有CheckedTextView除了本一个

lvReport.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 

     rlAdapterReport = (RelativeLayout) view.findViewById(R.id.rl_lv_report_user); 
     tvAdapterReportOption = (CheckedTextView) view.findViewById(R.id.tv_lv_report_user_title); 

     if (tvAdapterReportOption.isChecked()) { 
      //value = "un-Checked"; 
      tvAdapterReportOption.setCheckMarkDrawable(0); 
      tvAdapterReportOption.setTextColor(Color.parseColor("#000000")); 
      rlAdapterReport.setBackgroundColor(Color.parseColor("#FFFFFF")); 
      tvAdapterReportOption.setChecked(false); 
     } else { 
      //value = "Checked"; 

      Drawable dr = getResources().getDrawable(R.drawable.report_tick_icon); 
      Bitmap bitmap = ((BitmapDrawable) dr).getBitmap(); 
      Drawable finalDrawable = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 50, 50, true)); 

      tvAdapterReportOption.setCheckMarkDrawable(finalDrawable); 
      tvAdapterReportOption.setTextColor(Color.parseColor("#04CFE7")); 
      rlAdapterReport.setBackgroundColor(Color.parseColor("#D5D5D5")); 
      tvAdapterReportOption.setChecked(true); 
     } 
    } 
}); 

通过使用上述代码我能够选择所有项目(理解见附图),但我想一次选择单个项目。所以,我想取消选择所有项目,如果已​​经选择

enter image description here

编辑

我的适配器(ArrayAdapter)getView代码

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
ViewHolder holder = null; 

final ReportUserItems rowItem = getItem(position); 

LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
if (convertView == null){ 
    convertView = mInflater.inflate(R.layout.lv_report_user_adapter, null); 
    holder = new ViewHolder(); 

    holder.rlReport = (RelativeLayout) convertView.findViewById(R.id.rl_lv_report_user); 
    holder.tvReportOption = (CheckedTextView) convertView.findViewById(R.id.tv_lv_report_user_title); 

    convertView.setTag(holder); 
} 
else{ 
    holder = (ViewHolder) convertView.getTag(); 
} 

return convertView; 
} 
+0

发布您的适配器'getView()'方法.. – Bharatesh

+0

@skadoosh:嗨请参阅我的编辑 – Bahu

+0

您是否使用ArrayAdapter的底层数组?除非我错过了它,否则我没有看到任何参考。 – Cheticamp

回答

2

在您的适配器类店所选择的行每当用户点击其他项目时都进行位置更新和刷新。

您的Adpater类更改。

int selectedPosition = -1; //to store only selected item position 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder = null; 
    final ReportUserItems rowItem = getItem(position); 
    LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 
     //your code 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    //your other code 


    if (selectedPosition != -1) 
     if (selectedPosition == position) { 
      //your drawable code 
      holder.tvReportOption.setCheckMarkDrawable(finalDrawable); 
      holder.tvReportOption.setChecked(true); 
      //your other stuff : changing color etc 
     } else { 
      holder.tvReportOption.setCheckMarkDrawable(0); 
      holder.tvReportOption.setChecked(false); 
      //your other stuff : changing color etc 
     } 

    return convertView; 
} 

//create this method in Adapter class 
public void setSelected(int pos) { 
    selectedPosition = pos; //change selected item position 
    notifyDataSetChanged(); //refresh views 
} 

活动代码改变

lvReport.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
     adapter.setSelected(position); 
    } 
}); 

happyCodnig;

+0

它的工作,你是一个英雄。 happyCodnig; – Bahu

相关问题