তালিকাভিউতে অ্যারেএডাপ্টার সংশোধন করতে অক্ষম: অসমর্থিত অপারেশন এক্সসেপশন


96

আমি নাম সম্বলিত একটি তালিকা তৈরি করার চেষ্টা করছি। এই তালিকাটি পরিবর্তনযোগ্য (যুক্ত, মোছা, বাছাই করা ইত্যাদি) হওয়া উচিত। যাইহোক, আমি যখনই অ্যারেএডাপ্টারে আইটেমগুলি পরিবর্তন করার চেষ্টা করেছি, java.lang.UnsupportedOperationExceptionত্রুটি সহ প্রোগ্রামটি ক্র্যাশ হয়ে গেছে । আমার কোডটি এখানে:

ListView panel = (ListView) findViewById(R.id.panel);
String[] array = {"a","b","c","d","e","f","g"};
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, array);
adapter.setNotifyOnChange(true);
panel.setAdapter(adapter);

Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
      adapter.insert("h", 7);
   }
});

আমি পদ্ধতিগুলি সন্নিবেশ করা, অপসারণ এবং পরিষ্কার করার চেষ্টা করেছি এবং তাদের কোনওটিই কাজ করে না। কেউ আমাকে বলবে আমি কী ভুল করেছি?

উত্তর:


285

আমি চেষ্টা করেছিলাম, নিজেই ... পাওয়া গেছে এটি কার্যকর হয়নি। সুতরাং আমি অ্যারেএডাপ্টারের উত্স কোডটি পরীক্ষা করে দেখুন এবং সমস্যাটি খুঁজে পেয়েছি। অ্যারেএডিপ্টার একটি অ্যারে দ্বারা আরম্ভ করার পরে অ্যারেটিকে একটি অ্যাবস্ট্রাকলিস্ট (তালিকার) রূপান্তর করে যা পরিবর্তন করা যায় না।

সমাধানArrayList<String> অ্যারেএডাপ্টার শুরু করার সময় একটি অ্যারে ব্যবহার করে পরিবর্তে ব্যবহার করুন ।

String[] array = {"a","b","c","d","e","f","g"}; 
ArrayList<String> lst = new ArrayList<String>(Arrays.asList(array));
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
android.R.layout.simple_list_item_1, lst); 

চিয়ার্স!


8
তোমাকে অনেক ধন্যবাদ! আপনি আমাকে হতাশার কয়েক ঘন্টা বাঁচিয়েছেন। স্ট্রিং [] কেন কাজ করে না কেন আপনি আমাকে বোঝাতে আপত্তি করবেন?
রায়ান

@ রায়ান আপনি কোনও অ্যারে sertোকাতে পারবেন না, আপনি যদি তালিকার প্রয়োগটি অনুমতি না দেয় তবে আপনি একটি তালিকায় প্রবেশ করতে পারেন। যদি আপনার ব্যাকিং ডেটা পরিবর্তন হয় না, অ্যারেএডাপ্টার আপনাকে আরও মেমরি দক্ষ কৌশল ব্যবহার করতে দেয়।
স্টিফেন ডেন

@ st0le যদি আমি "নতুন অ্যারেলিস্ট <স্ট্রিং> (অ্যারেএস.এললিস্ট (অ্যারে))" বা কেবল "অ্যারে.এএসলিস্ট (অ্যারে)" পাস করি তবে তাতে কী পার্থক্য হবে? প্রথম কাজ করে এবং দ্বিতীয়টি কাজ করে না।
golosovsky

4
@ গলোসোভস্কি, প্রথমটিতে আপনি একটি পরিবর্তনীয় তালিকা তৈরি করেন, দ্বিতীয় উপায়টি অপরিবর্তনীয় তালিকা তৈরি করে। (একবার তৈরি করার পরে সংশোধন করা যাবে না)
0

4
এটি 2016 এবং এখনও এই নির্দিষ্ট দৃশ্যে ফেলে দেওয়া এই হাস্যকর ব্যতিক্রম।
oদও 95
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.