2013-03-08 15 views
19

मेरे पास एक सूचीत्मकता है जो वस्तुओं की सरणी सूची से डेटा के साथ व्यक्तियों के नाम और पते की एक सूची प्रदर्शित करेगी। यहां तक ​​कि सूचीदृश्य को भरने का तरीका यहां है ..ऑब्जेक्ट्स की सरणी सूची से पॉप्युलेट सूची

private void fillData(ArrayList<Person> messages) { 
    //populating list should go here 
} 

व्यक्ति वर्ग किसी व्यक्ति का नाम और पता संग्रहीत करता है।

public class Person { 
    String name; 
    String address; 
} 

मेरी सूचीदृश्य के लिए मेरे ListItem दो TextView से मिलकर बनता है, वहीं इस तरह:

<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:minHeight="?android:attr/listPreferredItemHeight" 
android:mode="twoLine" 
android:clickable="false" 
android:paddingBottom="9dp" 
android:paddingTop="5dp" > 

<TextView 
    android:id="@+id/display_name" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<TextView 
    android:id="@+id/display_number" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/display_name" 
    android:layout_below="@+id/display_name" 
    android:textAppearance="?android:attr/textAppearanceSmall" /> 

मैं दोनों नाम और प्रत्येक व्यक्ति की पता प्रदर्शित करने के लिए अपने सूचीदृश्य में प्रत्येक आइटम चाहते हैं। क्या कोई मदद कर सकता है?

अग्रिम धन्यवाद, और मेरा बुरा अंग्रेजी के लिए खेद है ...

+0

Google कस्टम सूचीदृश्य में खोजें ... – Pragnani

+0

आप 'ऑनक्रेट' विधि का उपयोग कर सकते हैं। इस मामले में, यह प्रोग्राम में प्रयोग योग्य होगा। – user7275835

उत्तर

25

अपनी गतिविधि में

AdapterPerson adbPerson; 
ArrayList<Person> myListItems = new ArrayList<Person>(); 

//then populate myListItems 

adbPerson= new AdapterPerson (youractivity.this, 0, myListItems); 
listview.setAdapter(adbPerson); 

एडाप्टर

public class AdapterPerson extends ArrayAdapter<Person> { 
    private Activity activity; 
    private ArrayList<Person> lPerson; 
    private static LayoutInflater inflater = null; 

    public AdapterPerson (Activity activity, int textViewResourceId,ArrayList<Person> _lPerson) { 
     super(activity, textViewResourceId, _lProducts); 
     try { 
      this.activity = activity; 
      this.lPerson = _lPerson; 

      inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     } catch (Exception e) { 

     } 
    } 

    public int getCount() { 
     return lPerson.size(); 
    } 

    public Product getItem(Product position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public static class ViewHolder { 
     public TextView display_name; 
     public TextView display_number;    

    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View vi = convertView; 
     final ViewHolder holder; 
     try { 
      if (convertView == null) { 
       vi = inflater.inflate(R.layout.yourlayout, null); 
       holder = new ViewHolder(); 

       holder.display_name = (TextView) vi.findViewById(R.id.display_name); 
       holder.display_number = (TextView) vi.findViewById(R.id.display_number); 


       vi.setTag(holder); 
      } else { 
       holder = (ViewHolder) vi.getTag(); 
      } 



      holder.display_name.setText(lProducts.get(position).name); 
      holder.display_number.setText(lProducts.get(position).number); 


     } catch (Exception e) { 


     } 
     return vi; 
    } 
} 
+0

वैसे, एडाप्टरपर्सन का दूसरा पैरामीटर 0 क्यों है? – djargonforce

2

यह कस्टम करने के लिए अपने समाधान है सूची एडाप्टर समस्या। पहले एक कस्टम arrayadapter:

public class MemoListAdapter extends ArrayAdapter<MemoEntry> { 

private int layoutResourceId; 

private static final String LOG_TAG = "MemoListAdapter"; 

public MemoListAdapter(Context context, int textViewResourceId) { 
    super(context, textViewResourceId); 
    layoutResourceId = textViewResourceId; 
} 


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    try { 
     MemoEntry item = getItem(position); 
     View v = null; 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      v = inflater.inflate(layoutResourceId, null); 

     } else { 
      v = convertView; 
     } 

     TextView header = (TextView) v.findViewById(R.id.list_memo_item_header); 
     TextView description = (TextView) v.findViewById(R.id.list_memo_item_text); 

     header.setText(item.getHeader()); 
     description.setText(item.getValue()); 

     return v; 
    } catch (Exception ex) { 
     Log.e(LOG_TAG, "error", ex); 
     return null; 
    } 
} 

}

और गतिविधि के onCreate विधि में:

और उसके बाद मुझे कुछ इस तरह एक फोन के साथ प्राप्त करने में कठिनाई के बाद एडाप्टर भरने:

ArrayList<MemoEntry> memoList = new ArrayList<MemoEntry>(); //here you should use a list with some content in it 
adapter.addAll(memoList); 

तो इसे अपने समाधान में अनुकूलित करने के लिए, अपना खुद का निर्माण करें customadapter, और मेरे ऑब्जेक्ट MemoEntry के बजाय, अपनी व्यक्तिगत कक्षा का उपयोग करें। getView विधि में, अपनी आवश्यकताओं के अनुरूप इसे बदलें। यह वही है जो मैं कर रहा हूं, इसलिए बहुत कठिन नहीं होना चाहिए।

आशा है कि इससे आपको थोड़ा सा मदद मिलेगी!

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