2013-07-29 7 views
7

मेरे पास एक ऐसा एप्लिकेशन है जहां मैं एक कस्टम सूची दृश्य प्रदर्शित करना चाहता हूं जिसमें एंड्रॉइड में कस्टम डायलॉग बॉक्स के अंदर दो टेक्स्ट व्यू शामिल हैं। अब तक, मुझे यह पता लगाने में मुश्किल हो रही है कि दोनों को कैसे कनेक्ट करें और संवाद बॉक्स की सामग्री कैसे उत्पन्न करें।एंड्रॉइड - एक कस्टम संवाद में एक कस्टम सूचीदृश्य को सही तरीके से निष्पादित करना

मैंने कस्टम सूची का पालन करने की कोशिश की, केवल संवाद एडाप्टर को सेट करने की उम्मीदों के साथ ट्यूटोरियल देखें, लेकिन इसका कोई फायदा नहीं हुआ।

यह list_row_dialog.xml है, दो textviews वाली पंक्ति के लिए लेआउट:

अब तक, यह है कि क्या मैं अब तक किया है

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="50dp" 
    android:orientation="horizontal" 
    android:padding="5dip" > 

<TextView 
    android:id="@+id/unit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textStyle="bold" 
    android:typeface="sans" /> 

<TextView 
    android:id="@+id/quantity" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:textColor="#343434" 
    android:textSize="12sp" /> 

</RelativeLayout> 

और यहाँ dialog_main.xml फाइल है, लेआउट फ़ाइल जिसे मैं डायलॉग बॉक्स का उपयोग करना चाहता हूं, यह मूल रूप से एक सूची दृश्य है।

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<ListView 
    android:id="@+id/custom_list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:dividerHeight="1dp" /> 

</LinearLayout> 

और यहाँ CustomListAdapterDialog.java है, मुझे यकीन है कि अगर मैं भी इस का उपयोग करने के संवाद बॉक्स पर डेटा को प्रदर्शित करने की आवश्यकता नहीं कर रहा हूँ:

public class CustomListAdapterDialog extends BaseAdapter { 

private ArrayList<ItemClass> listData; 

private LayoutInflater layoutInflater; 

public CustomListAdapterDialog(Context context, ArrayList<ItemClass> listData) { 
    this.listData = listData; 
    layoutInflater = LayoutInflater.from(context); 
} 

@Override 
public int getCount() { 
    return listData.size(); 
} 

@Override 
public Object getItem(int position) { 
    return listData.get(position); 
} 

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

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     convertView = layoutInflater.inflate(R.layout.list_row_dialog, null); 
     holder = new ViewHolder(); 
     holder.unitView = (TextView) convertView.findViewById(R.id.unit); 
     holder.quantityView = (TextView) convertView.findViewById(R.id.quantity); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.unitView.setText(listData.get(position).getVariant().toString()); 
    holder.quantityView.setText(listData.get(position).getUnit().toString()); 

    return convertView; 
} 

static class ViewHolder { 
    TextView unitView; 
    TextView quantityView; 
} 

} 

प्रारंभ में, मैं संवाद प्रदर्शित करने के लिए इस कोड की कोशिश की बॉक्स:

private void showDialog(){ 
    final Dialog dialog = new Dialog(this); 
    dialog.setContentView(R.layout.dialog_main); 


    dialog.show(); 
} 

लेकिन यह केवल शो, एक रिक्त पंक्ति, यह बहुत स्पष्ट है कि मैं इसे ठीक से पॉप्युलेट नहीं कर रहा हूँ।

कोई भी विचार किसी को भी? साथ ही, मैं showDialog() फ़ंक्शन में संवाद बॉक्स को पॉप्युलेट कर सकता हूं क्योंकि मेरे पास वह डेटा भी है जो मैं उसी जावा क्लास में पॉप्युलेट करना चाहता हूं।

उत्तर

23

क्या आप निम्न कार्य कर रहे हैं? आपको लेआउट फ़ाइल dialog_main को बढ़ाने की आवश्यकता होगी, ListView ढूंढें, एडाप्टर सेट करें और इसके लिए एक ऑनइटम क्लाइस्टनर सेट करें। इसके बाद, आप सूची को प्रदर्शित करने के लिए संवाद की setContentView(View) विधि का उपयोग कर सकते हैं।

private void showDialog(){ 

    final Dialog dialog = new Dialog(this); 

    View view = getLayoutInflater().inflate(R.layout.dialog_main, null); 

    ListView lv = (ListView) view.findViewById(R.id.custom_list); 

    // Change MyActivity.this and myListOfItems to your own values 
    CustomListAdapterDialog clad = new CustomListAdapterDialog(MyActivity.this, myListOfItems); 

    lv.setAdapter(clad); 

    lv.setOnItemClickListener(........); 

    dialog.setContentView(view); 

    dialog.show(); 

} 

वैसे, आपका एडाप्टर ठीक दिखता है। यह काम नहीं कर रहा है क्योंकि आप इसे काम करने के लिए कुछ भी नहीं दे रहे हैं।

+0

प्रतीक्षा करें मैं अपना कोड समायोजित करूंगा और देखें कि क्या होता है ... – Razgriz

+0

अंततः मैं इसे काम करने के लिए मिलता हूं! बहुत बहुत धन्यवाद सर! मैं इस कार्य में लगभग 3 दिनों तक फंस गया था। – Razgriz

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