2017-02-18 56 views
0

我有一個適配器類的回收站視圖。在單個項目視圖中還有一個複選框。在我的佈局視圖中,它包含上面提到的一個按鈕和回收站視圖。當我檢查視圖中的任何複選框時,該按鈕應該被激活(將顏色更改爲活動狀態)。當視圖按鈕上沒有被選擇時,應該以停用的形式出現。我怎麼可能?任何示例?代碼如下根據Recyclerview複選框中的變化控制按鈕行爲

public class PlatformAdapter extends RecyclerView.Adapter<PlatformAdapter.ViewHolder> { 

ArrayList<Batch> batches; 
ArrayList<CourseSlug> courses; 
boolean isInstituteStudent; 

public void setBatches(ArrayList<Batch> batches) { 
    this.batches = batches; 
    notifyDataSetChanged(); 
} 

public void setCourses(ArrayList<CourseSlug> courses) { 
    this.courses = courses; 
    notifyDataSetChanged(); 
} 

public ArrayList<CourseSlug> getCourses() { 
    return courses; 
} 

public ArrayList<Batch> getBatches() { 
    return batches; 
} 

public void setInstituteStudent(boolean instituteStudent) { 
    isInstituteStudent = instituteStudent; 
} 

public boolean isInstituteStudent() { 
    return isInstituteStudent; 
} 

public PlatformAdapter() { 
    courses = new ArrayList<>(); 
    batches = new ArrayList<>(); 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell_platform_item, parent, false); 
    return new ViewHolder(view); 
} 

@Override 
public void onBindViewHolder(final ViewHolder holder, final int position) { 
    if (isInstituteStudent) { 
     Batch batch = batches.get(position); 
     holder.enrolment.setText(batch.getName()); 
     holder.selectEnrollment.setChecked(batch.isPreselect()); 
    } else { 
     final CourseSlug course = courses.get(position); 
     holder.enrolment.setText(course.getName()); 
     holder.selectEnrollment.setChecked(course.isPreselect()); 


    } 
} 

@Override 
public int getItemCount() { 
    return isInstituteStudent ? batches.size() : courses.size(); 
} 

class ViewHolder extends RecyclerView.ViewHolder { 

    TextView enrolment; 
    CheckBox selectEnrollment; 

    public ViewHolder(final View itemView) { 
     super(itemView); 
     enrolment = (TextView) itemView.findViewById(R.id.tv_entrollment); 
     selectEnrollment = (CheckBox) itemView.findViewById(R.id.cb_select_entrollment); 
     selectEnrollment.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
       int index = getLayoutPosition(); 
       if(isInstituteStudent) { 
        Batch batch = batches.get(index); 
        batch.setPreselect(b); 
       } else { 
        CourseSlug course = courses.get(index); 
        course.setPreselect(b); 



         } 
        } 


     }); 

    } 
} 

@Override 
public long getItemId(int position) { 
    return super.getItemId(position); 
} 
} 

我Recyclerview和按鈕實現類下面

public class SelectPlatform extends BaseActivity { 

PlatformAdapter adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_select_platform); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    initializeViews(
      findViewById(R.id.ll_content_area), 
      findViewById(R.id.tv_error), 
      findViewById(R.id.pb_loading) 
    ); 

    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.rv_platform); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setLayoutManager(new LinearLayoutManager(this)); 
    adapter = new PlatformAdapter(); 
    recyclerView.setAdapter(adapter); 


private void renderCourses(ArrayList<CourseSlug> courses) { 
    getSupportActionBar().setTitle("Select Courses"); 
    TextView title = (TextView) findViewById(R.id.tv_select_enrollment); 
    title.setText("Select your courses"); 
    adapter.setInstituteStudent(false); 
    adapter.setCourses(courses); 
} 

private void renderInstitute(Institute institute) { 
    getSupportActionBar().setTitle("Select Batches"); 
    TextView title = (TextView) findViewById(R.id.tv_select_enrollment); 
    title.setText("Select your batches at " + institute.getName()); 
    adapter.setInstituteStudent(true); 
    adapter.setBatches(institute.getBatches()); 

    // Save institute name 
    SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit(); 
    editor.putString("institute_name", institute.getName()); 
    editor.commit(); 
} 

public void onButtonClick(View view) { 
    findViewById(R.id.pb_loading).setVisibility(View.VISIBLE); 
    findViewById(R.id.tv_error).setVisibility(View.GONE); 
    findViewById(R.id.ll_content_area).setVisibility(View.GONE); 
    if(adapter.isInstituteStudent()) { 
     ArrayList<Batch> batches = adapter.getBatches(); 

     ArrayList<Integer> batchIds = new ArrayList<>(); 
     for(Batch batch: batches) { 
      if(batch.isPreselect()) 
       batchIds.add(batch.getId()); 
     } 
     GeneralApiService.addBatches(this, batchIds); 
    } else { 
     ArrayList<CourseSlug> courses = adapter.getCourses(); 
     ArrayList<String> courseSlgus = new ArrayList<>(); 
     for(CourseSlug course: courses) { 
      if(course.isPreselect()) 
       courseSlgus.add(course.getSlug()); 
     } 
     GeneralApiService.addCourses(this, courseSlgus); 
    } 
    new SavePlatformNamesTask().execute(); 
} 

回答

0

給出您的活動,如創建一個方法,

public void updateUI(boolean isChecked){ 
     if(isChecked){ 
     // code to enable button 
     }else 
     // code to disable button 
    } 

,然後保持跟蹤,如果至少一個項目在您的回收站視圖中選擇並保留一個布爾值(比如isItemSelected)。在選擇/取消選擇適配器中的任何項目時,請在您的活動中調用方法以及標誌isItemSelected。