پروژه لیست یو استاد رو چطور میشه سورت کرد ؟
سلام دوستان
در پروژه کاستوم لیست ویو استاد، چطور میشه وقتی اطلاعات داخل یکی از آیتم های لیست ویو رو ادیت کردیم، اون آیتم بیاد اول لیست قرار بگیره !؟
مثل برنامه مسیج گوشی که همیشه آخرین مسیج ها اول لیست هستند...
با تشکر.
از این کد استفاده کنید
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lstContent = (ListView) findViewById(R.id.lstContent);
adapter = new AdapterNote(G.notes);
lstContent.setAdapter(adapter);
// for (int i = 0; i < 10; i++) {
StructTask note = new StructTask();
note.title = "salam";
note.description = "Description 1";
note.done = false;
G.notes.add(note);
StructTask note2 = new StructTask();
note2.title = "baran";
note2.description = "Description 2";
note2.done = false;
G.notes.add(note2);
StructTask note3 = new StructTask();
note3.title = "aseman";
note3.description = "Description 3";
note3.done = false;
G.notes.add(note3);
// }
adapter.sort(new Comparator<StructTask>() {
@Override
public int compare(StructTask item1, StructTask item2) {
return item1.title.compareTo(item2.title);
}
});
adapter.notifyDataSetChanged();
}
سلام
خب طبق توضیحاتی که دادید و متوجه شدم , شما قصد دارید که آیتم شما بعد از ویرایش , صرف نظر از اینکه چه تغییری کرده , به اول لیست یا در واقع همون ابتدای آرایه شما قرار بگیره .
خب راهی که به شما میتونم پیشنهاد بدم اینه که بعد از اینکه به اکتیویتی ویرایش رفتید :
1. از طریق پوزشنه آیتمی که از طریق اینتنت ارسال کردید , برای نمایش محتوای آیتم درون ادیت باکس استفاده کنید.
2. در لیسنری که برای کلید "تایید اتمام ویرایش" ست کردید , توسط پوزشن , اون آیتم (آیتم قدیم) رو از لیست پاک کنید.
3. مجددا یه اشاره گر جدید به کلاس استراکت نت بسازید.
4. از طریق ادیت باکس و چک باکس مقدار های جدید رو درون این اشاره گر واریز کنید.
5 . در نهایت این اشاره گر رو به موقعیت " صفر " لیست اضافه کنید.
خب به اینصورتی که در بالا توضیح دادم اون آیتم با مقادیر جدید به ابتدای لیست با موقعیت "صفر" رفته و تمامیه آیتم ها به مقدار یک واحد به سمت پایین انتقال پیدا خواهند کرد . به این شکل که آیتمی که قبل از انجام این عملیات در موقعیت "صفر" لیست قرار داشته به موقعیت "یک" در لیست انتقال پیدا میکنه و این عمل برای بقیه آیتم های مابعد این آیتم نیز اعمال خواهد شد .
کدهای لازم :
G.notes.remove(position);
---------------------------
G.notes.add(0,item);
مثال :
public int position = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit);
final EditText edtTitle = (EditText) findViewById(R.id.edtTitle);
final EditText edtDescription = (EditText) findViewById(R.id.edtDescription);
final CheckBox chkDone = (CheckBox) findViewById(R.id.chkDone);
Button btnOk = (Button) findViewById(R.id.btnOk);
-------------------------------------------------- دریافت پوزشن آیتم قدیم از طریق اینتنت اکسترا
Bundle extras = getIntent().getExtras();
if (extras != null) {
position = extras.getInt("POSITION");
}
-------------------------------------------------- نمایش مقادیر آیتم قدیم درون ادیت باکس و چک باکس
final StructTask item = G.notes.get(position);
edtTitle.setText(item.title);
edtDescription.setText(item.description);
chkDone.setChecked(item.done);
--------------------------------------------------
--------------------------------------------------- ساخت اشاره گر جدید و مقدار دهی و انتقال به ابتدای لیست
btnOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
StructTask item = new StructTask();
G.notes.remove(position);
item.title = edtTitle.getText().toString();
item.description = edtDescription.getText().toString();
item.done = chkDone.isChecked();
G.notes.add(0,item);
G.adapter.notifyDataSetChanged();
finish();
}
});
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .