-2

我工作baseadapter.i定製baseadapter.i用我的適配器spinner.i有一個problem.mybaseadapter的OnItemClickedListener回到我所有的自定義類的Android baseadapter回報定製類不串

carbon.widget.Spinner $ CustomClass @ 535ca050s

這是一個結果 這是我的代碼

public static class CustomClass { 
    private String Name; 

    public void setName(String name) 
    { 
     this.Name=name; 
    } 
    public String getName() 
    { 
     return Name; 
    } 
    public CustomClass(String name) 
    { 
     this.Name=name; 
    } 
} 

public static class Adapter extends RecyclerView.Adapter<ViewHolder, CustomClass> { 

    private ArrayList<CustomClass>items=new ArrayList<>(); 

    @Override 
    public CustomClass getItem(int position) { 
     return items.get(position); 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
     View view = inflater.inflate(R.layout.carbon_popup_row, parent, false); 
     return new ViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, final int position) { 
     super.onBindViewHolder(holder, position); 
     holder.tv.setText(items.get(position).getName()); 
     Log.e("position String", items.get(position).getName() + "s"); 
    } 

    @Override 
    public int getItemCount() { 
     return items.size(); 
    } 


    public void setItems(ArrayList<CustomClass> items) { 
     this.items = items; 
     notifyDataSetChanged(); 
    } 
} 

public static class ViewHolder extends RecyclerView.ViewHolder { 
    TextView tv; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     tv = (TextView) itemView.findViewById(R.id.carbon_itemText); 

    } 
} 

我插在我baseadapter一些值這樣

 for (int i = 0; i < 40; i++) { 
     CustomClass customClass = new CustomClass("item" + i); 
     // customClass.setName("beka" + i); 
     list.add(customClass); 
    } 

    Spinner day = (Spinner) findViewById(R.id.day); 
    day.setItems(list); 

這是我的setItem方法

public void setItems(ArrayList<CustomClass> items) { 
    popupMenu.setAdapter(defaultAdapter); 
    defaultAdapter.setOnItemClickedListener(onItemClickedListener); 
    defaultAdapter.setItems(items); 
} 




    RecyclerView.OnItemClickedListener onItemClickedListener = new RecyclerView.OnItemClickedListener() { 
    @Override 
    public void onItemClicked(int position) { 
     setText(popupMenu.getAdapter().getItem(position).toString()); 
     Log.e("position String",popupMenu.getAdapter().getItem(position).toString()+"s"); 
     popupMenu.dismiss(); 
    } 
}; 

正如我所說的,我不能回到我的自定義類的的getName。我怎麼能解決我的問題?如果有人知道的解決方案,請幫助我 PS 我嘗試在這個例子中作者日期使用的字符串數組來重寫這個例子

https://github.com/ZieIony/Carbon

,但我想用我的自定義數組 我怎麼能解決我的問題?

+0

提出您的問題,正確 – Jas

+0

@Jas當我登錄我的日誌我不能顯示myCustomClass'getName值(pleaase即時通訊pleasee看到我使用Log.e).carbon.widget.Spinner $ @ CustomClass這535ca050s是輸出 – donoachua

回答

0

popupMenu.getAdapter().getItem(position)正在返回CustomClass在你的,因爲你沒有覆蓋toString()在裏面,你會看到默認實現Object.toString()。爲了顯示名稱,你可以覆蓋它並返回名稱。例如。

@Override 
public String toString() { 
    return name != null ? name : "no name set"; 
} 

或者您也可以叫popupMenu.getAdapter().getItem(position).getName()

例如

CustomClass objectAtPos = popupMenu.getAdapter().getItem(position); 
if (objectAtPos != null) { 
    setText(objectAtPos.getName()); 
    Log.e("position String",objectAtPos.getName()+"s"); 
} 
popupMenu.dismiss(); 
+0

謝謝,但第一次我不能在Spinner中顯示我的第一個值,我可以解決它嗎? – donoachua

+0

你是什麼意思*第一次* – Blackbelt

+0

我第一次看不到任何思想,但當我點擊它時,我可以顯示我所有的價值(物品)@Blackbelt – donoachua