اکتیویتی در اندروید
سلام خسته نباشید آقا سناریو اینه مثلا یه لیست ویو 10تا گزینه داره من میخوام رو هرکدوم از گزینه های لیست ویو کلیک کرد بره تو یه دونه اکتیویتی مطلب راجب خودشو نشون بده نه این که10تا اکتیویتی جدا بسازم ممنون میشم کمک کنید خسته نباشید اگه امکانش هست کدشو بزارید خیلی ممنون
درود، شما باید یک Adapter و لایه مورد نظر را بسازید و تمام کامپونت های ui رو تعریف و اتصال آن هارو برقرار کنید ک رو هر کدام از item ها کلید میکنید یک رویدادی انجام شود. و مثلا یک activity مشترک بسازید و یک آیدی ارسال کنید که بره از دیتابیس بخواند براساس آن آیدی یا همه اطلاعات را به سمت activity ارسال کنید با استفاده از putExtra. نمونه کد های یک adapter بصورت زیر است.
public class NoteAdapter extends RecyclerView.Adapter<NoteAdapter.ViewHolder> {
private ArrayList<NoteStruct> list;
private int freezePosition;
public NoteAdapter(ArrayList<NoteStruct> list) {
this.list = list;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_note, parent, false);
ViewHolder viewHolder = new ViewHolder(itemView);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
NoteStruct item = list.get(position);
holder.txtTitleNote.setText(item.title);
holder.txtDecriptionNote.setText(item.description);
holder.chkDone.setChecked(item.isDone);
holder.chkDone.setEnabled(false);
holder.layoutRoot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
General.openActivityAsBaseActivity(EditNoteActivity.class, Intent.FLAG_ACTIVITY_NEW_TASK, false, "POSITION", position);
}
});
holder.imgDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.remove(item);
notifyItemRemoved(position);
//this line below gives you the animation and also updates the
//list items after the deleted item
notifyItemRangeChanged(position, getItemCount());
}
});
freezePosition = 0;
holder.chkDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CheckBox checkBox = (CheckBox) view;
item.isDone = checkBox.isChecked();
freezePosition = position;
Toast.makeText(Base.context, "" + freezePosition, Toast.LENGTH_SHORT).show();
holder.chkDone.setEnabled(false);
if (item.isDone) {
int colorTaskDone = Base.context.getResources().getColor(R.color.cloudy_colorLayoutRootTaskDone);
holder.layoutRoot.setBackgroundColor(colorTaskDone);
} else {
int colorTaskNoDone = Base.context.getResources().getColor(R.color.cloudy_colorLayoutRootTaskNoDone);
holder.layoutRoot.setBackgroundColor(colorTaskNoDone);
}
}
});
if (item.isDone) {
int colorTaskDone = Base.context.getResources().getColor(R.color.cloudy_colorLayoutRootTaskDone);
holder.layoutRoot.setBackgroundColor(colorTaskDone); //#8800aa5a
} else {
int colorTaskNoDone = Base.context.getResources().getColor(R.color.cloudy_colorLayoutRootTaskNoDone);
holder.layoutRoot.setBackgroundColor(colorTaskNoDone); //#55ee0000
}
}
@Override
public int getItemCount() {
return list.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
ArrayList<CheckBox> chkDonelist = new ArrayList<>();
LinearLayout layoutRoot;
TextView txtTitleNote;
TextView txtDecriptionNote;
CheckBox chkDone;
ImageView imgDelete;
public ViewHolder(View itemView) {
super(itemView);
layoutRoot = (LinearLayout) itemView.findViewById(R.id.layoutRoot);
txtTitleNote = (TextView) itemView.findViewById(R.id.txtTitleNote);
txtDecriptionNote = (TextView) itemView.findViewById(R.id.txtDecriptionNote);
chkDone = (CheckBox) itemView.findViewById(R.id.chkDone);
imgDelete = (ImageView) itemView.findViewById(R.id.imgDelete);
chkDonelist.add(chkDone);
}
}
}
و همین طور نمونه کد برای ارسال داده به یک activity
intent.putExtra(key, data.toString());
سلام. شما می تونید صفحه مربوط به اکتیویتی رو در زمان اجرا تکمیل کنید، که روی هر عنصر کلیک شد به یه شکل تکمیل بشه
حالا اگه دقیق تر بنویسید قراره چه روندی طی بشه میشه دقیق تر بحث کرد
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .