2014-07-20 7 views
6

मैं हो रही है इस त्रुटि:java.lang.IllegalArgumentException: एक viewTypeCount नहीं हो सकता <1

java.lang.IllegalArgumentException: Can't have a viewTypeCount < 1 

मैं बहुत क्या यह पैदा यकीन है कि मैं ठीक-ठीक पता हूँ, लेकिन मैं पता नहीं कैसे ठीक करना।

मेरा ऐप डेटाबेस से उपयोगकर्ताओं को लोड करता है। जब उपयोगकर्ता के पास सूची दृश्य में कम से कम 1 मित्र होता है, तो यह ठीक है। जब उपयोगकर्ता बिल्कुल नया होता है और उसके पास अभी तक कोई दोस्त नहीं है, तो ऐप क्रैश हो जाता है क्योंकि सूचीदृश्य की संख्या 0 है।

क्या यह केवल त्रुटि प्रबंधन का मामला है?

यदि मैं सभी आवश्यक प्रासंगिक कोड पोस्ट नहीं करता तो कृपया मुझे बताएं!

public class MyAdapter extends ArrayAdapter<HashMap<String, String>> { 

    Context context; 
    int resourceId; 
    LayoutInflater inflater; 
    private Context mContext; 

    @Override 

    public int getViewTypeCount() {     

     return getCount(); 
    } 

    @Override 
    public int getItemViewType(int position) { 

     return position; 
    } 


    ArrayList<HashMap<String, String>> items; 
    public MyAdapter (Context context, int resourceId, ArrayList<HashMap<String, String>> items) 
    { 
     super(context, resourceId, items); 
     mContext = context; 
     this.items =items; 
     inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
     final ViewHolder holder; 
     if (convertView == null){ 

      convertView = inflater.inflate(R.layout.list_item, null); 

      holder = new ViewHolder(); 
      holder.fbphoto = (ImageView)convertView.findViewById(R.id.fbphoto); 
      holder.name = (TextView)convertView.findViewById(R.id.name); 

    convertView.setTag(holder); 

     } else { 

      holder = (ViewHolder)convertView.getTag(); 
     } 



     final HashMap<String,String> item = (HashMap<String,String>) items.get(position); 
     if (item != null) 
     { 

      String facebookProfilePicUrl = "https://graph.facebook.com/"+item.get(TAG_FACEBOOKID)+"/picture?width=150&height=150"; 

      Picasso.with(mContext) 
      .load(facebookProfilePicUrl) 
      .placeholder(R.drawable.no_image) 
      .into(holder.fbphoto); 

holder.name.setText(item.get(TAG_USERNAME)); 

} 

     return convertView; 
    } 

    public class ViewHolder 
    { 
     ImageView fbphoto; 
     TextView name; 

    } 
} 
+1

'getViewTypeCount() 'को आपके पास दृश्य प्रकारों की संख्या वापस करनी चाहिए, न कि पंक्तियों की संख्या। आपका 'getView() 'लागू करने वाला केवल एक प्रकार का दृश्य देता है, इसलिए' getViewTypeCount() 'को' 1' वापस करना चाहिए। 'ListAdapter' दृश्य प्रकारों के बारे में और पढ़ें। –

+1

मैं इसे गलत तरीके से पढ़ता हूं "जब उपयोगकर्ता बिल्कुल नया होता है और उसके पास अभी तक कोई दोस्त नहीं है, तो ऐप क्रैश हो जाता है क्योंकि सूचीदृश्य की संख्या 0. है, क्या यह केवल त्रुटि प्रबंधन का मामला है?" और पहले http://stackoverflow.com/questions/20517922/custom-rows-in-listview-with- कस्टम- एडाप्टर पर एक गलत उत्तर पोस्ट किया। लिंक में आपके पास 3 अलग-अलग विचार हैं और इसलिए GetViewTypeCount वापसी 3. जब सूची खाली होती है तो आप एक खाली दृश्य दिखा सकते हैं http://developer.android.com/reference/android/widget/AdapterView.html#setEmptyView(android.view ।राय) – Raghunandan

उत्तर

20

मुझे लगता है कि आप ViewTypeCount की बात याद आती है:

यहाँ मेरी अनुकूलक है। आपको अपनी सूची में अलग-अलग दृश्य प्रकारों की संख्या वापस करनी चाहिए। सूची के अंदर दृश्यों के पुनर्चक्रण के लिए यह महत्वपूर्ण है।

इमेजिंग आपके पास 2 प्रकार के लिस्टिटम्स हैं, एक सफेद पृष्ठभूमि वाला और एक काला पृष्ठभूमि वाला। जब आप ViewTypeCount के रूप में 2 लौटते हैं तो सूचीदृश्य ठीक है, वहां 2 प्रकार की लिस्टिटैम हैं और उन्हें GetView व्यू रीसाइक्लिंग में मिश्रित नहीं किया जाएगा।

तो बस का उपयोग करें:

public int getViewTypeCount() {     
     return 1; 
    } 

या बिल्कुल उस विधि को ओवरराइड नहीं है।

2

getViewTypeCount इस एडाप्टर को वापस आने वाले विभिन्न प्रकार के विचारों की संख्या देता है। चूंकि आप केवल एक प्रकार का दृश्य लौट रहे हैं, इसे केवल 1.

संबंधित मुद्दे