2016-05-18 10 views
0

除くすべてCheckedTextViewを未選択iはベローズコードを使用して、リストビュー項目を選択しています(これは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

関連する問題