آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

نحوه دریافت اطلاعات از لیست ویو در همان اکتیوتی که لیست ما را نشان می دهد

Borhani  12 سال پیش  12 سال پیش
+3 0

سلام و عرض ادب خدمت تمام برنامه نویسان عزیز:

در آموزش ها یاد گرفتیم وقتی اطلاعات یک رکورد از لیست ویو  می خواستیم تغییر بدهیم کافی بود که به این صورت عمل کنیم

 Intent intent = new Intent(G.CurrentActivity, EditContact.class);
                        intent.putExtra("POSITION", position);
                        G.CurrentActivity.startActivity(intent);

و بعد در کلاس EditContact این حرکت رو می زدیم 

        if (extras != null)
        {
            position = extras.getInt("POSITION");
        }
        final StructNote node = G.NotesPerson.get(position);
        edtNameContact.setText(node.Name);
        edtNumberContact.setText(node.sender);

این قسمت از کد را در oncreat کلاس EditContact می نویشتیم . وبعد تغییراتی  که می خواستیم انجام گیرد را در edtNameContact

وارد می کردیم .

حال سوال من اینجاست : چطور می شود این تغییرات را در همان اکتیوتی که لیست ویو  وجود دارد انجام داد 

یعنی که دو فیلد edtNameContact و edtNumberContact را در همان اکتیوتی روی لیست ویو کلیک کنم و محتوای آن در ادیت تکس ها قرار گیرد

و پس تغییرات مجدد در لیست ویو به روز رسانی شود.

مشکل اصلی در این جاست که  Adapter جدا است و اکتیوتی جدا  به این خاطر سردرگم شده ام.

+2 0
من خیلی از سئوال شما سر در نیاوردم اما کلاً کافیست که Object موجود در آرایه را تغییر دهید و روی Adapter متد notifyDataSetChanged را صدا کنید. این از هر جایی ممکن است، چه همان Activity ، چه Activity دیگری و ... (12 سال پیش)
+2 0
سلام مهندس عزیز: public class AdapterNoteAddkey extends ArrayAdapter ببین آداپتور اکستندز شده از آرای آداپتور ما در این کلاس نمی توانیم شی مثل ادیت تکس تعریف کنیم . چنین کاری رو باید در یک اکتیوتی که بشود متد oncreat داشته باشد تعریف کنیم به این خاطر است که ما برای تغییر محتوای رکوردهای لیست ویو محتوا رو بر می داریم و با یک اینتنت به اکتیوتی دیگر می بریم تغییرات رو اعمال می کنیم و اکتیوتی موجود را finish می کنیم آنگاه در اکتیوتی که لیست ویو در آن است setadapter اعمال می شود و ما تغییرات رو می بینیم. حال من نمی خواهم که به اکتیوتی دیگر بروم می خواهم در همان اکتیوتی که لیست ویو وجود دارد دو تا شی ادیت تکس بگذارم و قتی روی onclick آداپتور کلید گردد در لیست ویو تغییرات اعمال گردد. (12 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
مجتبی یگانه  12 سال پیش
0 0

ببینید ، شما توی رویداد کلیک میگید این کار انجام بشه

Intent intent = new Intent(G.CurrentActivity, EditContact.class);
intent.putExtra("POSITION", position);
G.CurrentActivity.startActivity(intent);

حالا چیزی که شما میخواین اینه که مقدار یه edittext ست بشه دیگه پس :

 public edtname;

oncreate()
{

edtname = (EditText) findview ..
]

//بجایه اون اینتنت
edtname.settext("value");

حالا value رو از جایی که میخواین بگیرین مثل item.title یا هرچی 

0 0
سلام مهندس : حقیقتا متوجه جواب شما نشدم بله برای تغییر نیاز هست که در رویداد کلیک این کار انجام دهیم اما مشکل اینجاست برای تغییر نیاز به یک اکتیوتی دیگری است که متد oncreat آن اجرا گردد و ما نمی توانیم در همان اکیتویتی هستیم تغییر را اعمال کنیم چون متد oncreat آن اکتیویتی حاضر اجرا شده است اصل سوال در اینجاست : چون اکتیوتی متد oncreat و onresume خود را اجرا کرده دیگر به لیست ویو واکنشی نشان نمیدهد مگر ببندی دوباره باز کنی تا تغییر را ببینی (12 سال پیش)
0 0
نه دیگه عزیزم ، با دقت بیشتر متوجه میشی ! ، ببین شما مثلا کد میزای توی oncreate که به کلیک واکنش نشون بده ، ایا شما یه بار کلیک کنی دیگه کد از دور خارج میشه ؟ ، نه این کد همیشه هست ، و فقط در زمان ساخته شدن یک بار اجرا میشه ، شما میتونی از مشتقاتش هنوز استفاده کنی ، اگر هم نشد مشکلی نیست شی رو در یک سطح بالا تر یعنی در سطح کلاس تعریف کنید (12 سال پیش)
0 0
سلام مهندس عزیز: public class AdapterNoteAddkey extends ArrayAdapter ببین آداپتور اکستندز شده از آرای آداپتور ما در این کلاس نمی توانیم شی مثل ادیت تکس تعریف کنیم . چنین کاری رو باید در یک اکتیوتی که بشود متد oncreat داشته باشد تعریف کنیم به این خاطر است که ما برای تغییر محتوای رکوردهای لیست ویو محتوا رو بر می داریم و با یک اینتنت به اکتیوتی دیگر می بریم تغییرات رو اعمال می کنیم و اکتیوتی موجود را finish می کنیم آنگاه در اکتیوتی که لیست ویو در آن است setadapter اعمال می شود و ما تغییرات رو می بینیم. حال من نمی خواهم که به اکتیوتی دیگر بروم می خواهم در همان اکتیوتی که لیست ویو وجود دارد دو تا شی ادیت تکس بگذارم و قتی روی onclick آداپتور کلید گردد در لیست ویو تغییرات اعمال گردد. (12 سال پیش)
0 0
با توجه به توضیحات مشکلی نیست. همان روش است که گفتم. شما دو EditText می گذارید و زیر آن ListView . با تغییرات در EditText و مثلاً زدن دکمه مثلاً Filter ، شما مقادیر آرایه ای که ListView از آن استفاده می کند را بروز می کنید و روی Adapter چسبیده به ListView دستور notifyDataSetChanged می دهید. (12 سال پیش)
0 0
آقای مهندس سلام شما درست میگین با تغییر در محتوای آرایه ودستور notify تغییر را در لیست ویو می دهد اما من میخواهم وقتی روی رکوردهای لیست ویو کلیک کردم تکس باکس های آن پر از محتوای لیست ویو شود چون میخواهم بعد از محتوای تکس باکس استفاده دیگر انجام دهم. مشکل با layotRootAdapter.setonclicklistener دارم چون نمی شود داخل آن اشیاء کلاس دیگر را تعریف کرد. (12 سال پیش)
پاسخ به سوال 
مجتبی یگانه  12 سال پیش
0 0

 public class ActivityTheme extends Activity {

    TextView      text;

    @Override
    public void onCreate(Bundle savedInstanceState) {
// ببینید اون بالا تعریف شد ، اینجا مقدار میدیم ، حالا همه جا میشه استفاده کردش
Textview text = (TextView) findviewbyid(R.id.text);
}
0 0
سلام از تلاش ها ی شما تقدیر فراوان می کنم از سوالم یک فیلم تهیه کردم یک ایمیل به من بدهید تا برای شما بفرستم. منظورم در این جا نیست در کلاس ArrayAdpter می باشد. باز هم تشکر (12 سال پیش)
0 0
داداش ول کن ، فیلم چیه ! ، پروژه رو به ایمیلم بفرست ، ایمیلم هم تو پروفایلم هست (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .