2014-03-03 61 views
0

我試圖創建微調列表對話框,但我有錯誤「ArrayAdapter需要的資源ID是一個TextView」我創造了我俗適配器,它ArrayAdapter需要的資源ID是一個TextView在微調

public class OrderTypeAdapter extends ArrayAdapter<String> { 
private final Context context; 
private final List<String> values; 

private class ResourseHolder{ 
    protected TextView text; 
} 

public OrderTypeAdapter(Context context, List<String> values) { 

    super(context, R.layout.item_list_dialog,values); 
    this.context = context; 
    this.values = values; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View rowView; 
    if(convertView == null){ 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     rowView = inflater.inflate(R.layout.item_list_dialog,parent,false); 
     ResourseHolder holder = new ResourseHolder(); 
     holder.text = (TextView) rowView.findViewById(R.id.ild_main_text_view); 
     rowView.setTag(holder); 
    } else { 
     rowView = convertView; 
    } 

    ResourseHolder holder = (ResourseHolder) rowView.getTag(); 
    holder.text.setText(values.get(position)); 

    return rowView; 
} 
項目

}

XML代碼

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
<TextView 
     android:id="@+id/ild_main_text_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

我本身牛逼Addapter通過非標準方式

OrderTypeAdapter adapter =new OrderTypeAdapter(getApplicationContext(), 
      Convert.toList(searchParam.getOrderTypes())); 
    orderTypeSpinner.setAdapter(adapter); 

以微調器當我點擊微調作秀對話框我的應用程序崩潰,但是當我試圖用ArrayAdapter一切都OK。這裏有什麼問題 ?

+0

顯示以及 –

回答

1

您正在尋找

rowView.findViewById(R.id.ild_main_text_view); 

但你的佈局裏,你有

@+id/item_text_view 

所以,你應該相應改變:在其他條件

rowView.findViewById(R.id.item_text_view); 
+0

感謝,你初始化orderTypeSpinner的代碼,但它崩潰太多 – Abbath

+0

編輯你的問題,並添加堆棧跟蹤。 – Blackbelt

0

holder = (ResourseHolder) rowview.getTag() 

,並在開始

0

初始化轉換視圖rowview我決定問題,延長BaseAdapter insteed ArrayAdapter :)

0

你沒有定義getDropDownView您的自定義Arrayadapter.spinners需要在陣列適配器一個getdropdown方法。我的建議是在Arrayadapter中定義一個getCustomView方法。例如簡單的代碼必須喜歡它:

public class Adapter1 extends ArrayAdapter<String> { 

    private final Activity context; 
    private final String[] string1; 
    private final String[] stringpic; 



    public Adapter1(Activity context, String[] name, String[] pic) { 
     super(context, R.layout.row, name); 

     this.context = context; 
     this.string1 = name; 
     this.stringpic = mpic;   
    } 


    @Override 
    public View getDropDownView(int position, View convertView,ViewGroup parent) { 
     return getCustomView(position, convertView, parent); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     return getCustomView(position, convertView, parent); 
    } 


    public View getCustomView(int position, View view, ViewGroup parent) { 
     LayoutInflater inflater = context.getLayoutInflater(); 
     View rowView = inflater.inflate(R.layout.row, parent, false); 
     TextView txtname = (TextView) rowView.findViewById(R.id.textView);   
     ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView); 



// write your statements in here for example 
if (string1[position] != null) { 
      txtname.setText(string1[position]); 
     } 

    return rowView; 
} 
} 
相關問題