0
recycler view
の特定のアイテムをクリックすると、dialog
を表示します。今私はこれを行う方法がわかりませんが、私は主な活動からinterface
を使用することを検討していました。 adapter
は項目(TextView
テキスト)をインターフェイスに渡し、メインアクティビティはパラメータ項目を受け入れ、それに基づいてダイアログを表示します。しかし、私はそれをどうやって行うのか分かりません。それともここアダプタを使用してリサイクラービューにあるアイテムに基づくダイアログを表示
RecyclerAdapter.java
public class RecyclerAdapter extends RecyclerView.Adapter {
private List<String> mDataSet = new ArrayList<>();
private LayoutInflater mInflater;
private final ViewBinderHelper binderHelper = new ViewBinderHelper();
public RecyclerAdapter(Context context, List<String> dataSet) {
mDataSet = dataSet;
mInflater = LayoutInflater.from(context);
// uncomment if you want to open only one row at a time
// binderHelper.setOpenOnlyOne(true);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.row_list, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder h, int position) {
final ViewHolder holder = (ViewHolder) h;
if (mDataSet != null && 0 <= position && position < mDataSet.size()) {
final String data = mDataSet.get(position);
// Use ViewBindHelper to restore and save the open/close state of the SwipeRevealView
// put an unique string id as value, can be any string which uniquely define the data
binderHelper.bind(holder.swipeLayout, data);
// Bind your data here
holder.bind(data);
}
}
@Override
public int getItemCount() {
if (mDataSet == null)
return 0;
return mDataSet.size();
}
/**
* Only if you need to restore open/close state when the orientation is changed.
* Call this method in {@link android.app.Activity#onSaveInstanceState(Bundle)}
*/
public void saveStates(Bundle outState) {
binderHelper.saveStates(outState);
}
/**
* Only if you need to restore open/close state when the orientation is changed.
* Call this method in {@link android.app.Activity#onRestoreInstanceState(Bundle)}
*/
public void restoreStates(Bundle inState) {
binderHelper.restoreStates(inState);
}
private class ViewHolder extends RecyclerView.ViewHolder {
private SwipeRevealLayout swipeLayout;
private View tickOffLayout;
private View infoLayout;
private View displayedText;
private TextView textView;
private CheckBox checkBox;
public ViewHolder(View itemView) {
super(itemView);
swipeLayout = (SwipeRevealLayout) itemView.findViewById(R.id.swipe_layout);
tickOffLayout = itemView.findViewById(R.id.tickOff_layout);
infoLayout = itemView.findViewById(R.id.info_layout);
displayedText = itemView.findViewById(R.id.displayedItemOnRecyclerView);
textView = (TextView) itemView.findViewById(R.id.text);
checkBox = (CheckBox) itemView.findViewById(R.id.checkItem);
}
public void bind(String data) {
/* tickOffLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(checkBox.isChecked()){
Log.e("Checkbox", "IS CHECKED");
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
tickOffLayout.setBackgroundColor(Color.parseColor("#52abff"));
notifyDataSetChanged();
}else if(!checkBox.isChecked()){
Log.e("Checkbox", "IS UNCHECKED");
textView.setPaintFlags(textView.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
tickOffLayout.setBackgroundColor(Color.parseColor("#d9d9d9"));
notifyDataSetChanged();
}
}
});*/
infoLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
notifyDataSetChanged();
}
});
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(checkBox.isChecked()){
Log.e("Checkbox", "IS CHECKED");
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
tickOffLayout.setBackgroundColor(Color.parseColor("#52abff"));
displayedText.setBackgroundColor(Color.parseColor("#CCCCCC"));
notifyDataSetChanged();
}else if(!checkBox.isChecked()){
Log.e("Checkbox", "IS UNCHECKED");
textView.setPaintFlags(textView.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
tickOffLayout.setBackgroundColor(Color.parseColor("#d9d9d9"));
displayedText.setBackgroundResource(R.drawable.define_background);
notifyDataSetChanged();
}
}
});
textView.setText(data);
}
}
}
私の質問は、どのように私はアイテムのための別のダイアログを表示するには、recyclerview onclickを取得するのですか?この例を考えてみましょう:私は3つのアイテム(これらのアイテムはarraylistで表示されています)を私のrecyclerviewリストに入れました。 2 |図3には、それぞれ「クリックされた項目1」、「クリック2」、「クリック3」のダイアログが示されている。しかし、それはリストがいつでも変更する能力を持つことができるので、アダプターの位置を取得することはできませんので、私はテキストを取得する必要がありますようにsoemthing(recyclerview item == "first"のテキスト){displayこのダイアログ} ....あなたは私の問題をさらに理解することができますか? – masterplox