2016-11-18 7 views
1

これは私が思うよりも簡単であるとは信じていますが、やや混乱します。RecyclerView内部配列クラスを持つ配列pojoクラスのアダプタ

私は商品と呼ばれるクラスと停止と呼ばれるクラスを持っています。停止クラスは商品の配列を取ります。 stop内のすべての項目が正しく解析されています。デバッガ上のstopクラスの内容を調べると、すべてがどこに行かなければならないか分かります。問題は、Stopsクラスとその内部のCommodities addapterクラスから内容を表示するために使用されるアダプタから何を取得するのかを知ることにあります。

ここで私は(それが簡単である)

まずコモディティクラス

public class Commodities implements Parcelable{ 
    private String item; 
    private String description; 
    private String poNumber; 
    private String qty; 
    private String weight; 

    public Commodities() {} 

    public String getItem() { 
     return item; 
    } 

    public void setItem(String item) { 
     this.item = item; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public String getPoNumber() { 
     return poNumber; 
    } 

    public void setPoNumber(String poNumber) { 
     this.poNumber = poNumber; 
    } 

    public String getQty() { 
     return qty; 
    } 

    public void setQty(String qty) { 
     this.qty = qty; 
    } 

    public String getWeight() { 
     return weight; 
    } 

    public void setWeight(String weight) { 
     this.weight = weight; 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(item); 
     dest.writeString(description); 
     dest.writeString(poNumber); 
     dest.writeString(qty); 
     dest.writeString(weight); 
    } 
    private Commodities(Parcel in){ 
     item = in.readString(); 
     description =in.readString(); 
     poNumber = in.readString(); 
     qty = in.readString(); 
     weight = in.readString(); 
    } 

    public static final Creator<Commodities> CREATOR = new Creator<Commodities>() { 
     @Override 
     public Commodities createFromParcel(Parcel source) { 
      return new Commodities(source); 
     } 
     @Override 
     public Commodities[] newArray(int size) { 
      return new Commodities[size];} 
    }; 
} 

現在、上記の情報は、アダプターその後

public class Stops implements Parcelable{ 
    private String stop_id; 
    private String type; 
    private String location; 
    private String address; 
    private String city; 
    private String state; 
    private String zip; 
    private String from; 
    private String to; 

    private Commodities[] commodities; 

    public Stops() {} 
    public String getStop_id() { 
     return stop_id; 
    } 

    public void setStop_id(String stop_id) { 
     this.stop_id = stop_id; 
    } 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 


    public String getLocation() { 
     return location; 
    } 

    public void setLocation(String location) { 
     this.location = location; 
    } 

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 

    public String getCity() { 
     return city; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 

    public String getState() { 
     return state; 
    } 

    public void setState(String state) { 
     this.state = state; 
    } 

    public String getZip() { 
     return zip; 
    } 

    public void setZip(String zip) { 
     this.zip = zip; 
    } 

    public String getFrom() { 
     return from; 
    } 

    public void setFrom(String from) { 
     this.from = from; 
    } 

    public String getTo() { 
     return to; 
    } 

    public void setTo(String to) { 
     this.to = to; 
    } 

    public Commodities[] getCommodities() { 
     return commodities; 
    } 



    public void setCommodities(Commodities[] commodities) { 
     this.commodities = commodities; 
    } 
    /** 
    * The content for the actual parcelables start in here 
    * 
    * */ 
    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeTypedArray(commodities,0); 
     dest.writeString(address); 

    } 
    private Stops(Parcel in){ 
     commodities = in.createTypedArray(Commodities.CREATOR); 
     address = in.readString(); 
    } 
    public static final Creator<Stops> CREATOR = new Creator<Stops>(){ 
     @Override 
     public Stops createFromParcel(Parcel source) { 
      return new Stops(source); 
     } 
     @Override 
     public Stops[] newArray(int size){ 
      return new Stops[size]; 
     } 
    }; 
} 

停止クラスで持っているコードがあります

パブリッククラスStopsAdapter extends RecyclerView.Adapter {

Stops[] como; // change this to stops and every other ocurrance of stops 
    public StopsAdapter(Stops[] comms){ 
     como = comms; 
    } 
    @Override 
    public StopsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.load_display_items, parent, false); 
     StopsViewHolder holder = new StopsViewHolder(view); 
     return holder; 
    } 

    @Override 
    public void onBindViewHolder(StopsViewHolder holder, int position) { 
     holder.bindStops(como[position]); 

    } 

    @Override 
    public int getItemCount() { 
     return como.length; 
    } 

    public class StopsViewHolder extends RecyclerView.ViewHolder { 
     public TextView mItem; 
     public StopsViewHolder(View itemView) { 
      super(itemView); 
      mItem = (TextView)itemView.findViewById(R.id.nameHolder); 
     } 
     public void bindStops(Stops stop) { 
      mItem.setText(stop.getAddress()); 
      Log.d("<",mItem.getText().toString()); 
     } 
    } 
} 

情報を取得し、アダプターを開始アクティビティ:

public class LoadsActivity extends AppCompatActivity { 

    // et the gold juju 
    private Stops[] commodities; 
    @BindView(R.id.recyclerView) RecyclerView mRecyclerView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_loads); 
     ButterKnife.bind(this); 

     //get that intent parcelable juju mojo baby 
     Intent intent = getIntent(); 
     Parcelable[] parcelable = intent.getParcelableArrayExtra(MainActivity.COMM_CONTENT); 

     commodities = Arrays.copyOf(parcelable, parcelable.length, Stops[].class); 


     //adapter bitches 
     StopsAdapter adapter = new StopsAdapter(commodities); 
     mRecyclerView.setAdapter(adapter); 
     RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); 
     mRecyclerView.setLayoutManager(layoutManager); 

     mRecyclerView.setHasFixedSize(true); 


    } 

} 

表示の内容は、私は大丈夫です停止クラスの内部で持っているものに基づいて移入され、アドレスのような変数(私はパーセルブル部分でコード化したように)それに応じて表示しますが、私の質問は基本的です。商品のアイテムを使ってどうすればいいですか?私は

mItem.setText(stop.getCommodities().getItem()); 

(停止アダプタで)呼び出そうと私はそれがコモディティクラスの内部にあるメソッドのgetItem()を解決傾けるというエラーを取得します。

基本的に、StopsAdapter内の商品からコンテンツを取得する方法はわかりません。

答えて

3

getCommodities()は配列を返します。あなたが商品を選択し、項目する必要があり

public Commodities[] getCommodities() { 
    return commodities; 
} 

はそうあなたがそう簡単だったその要素

mItem.setText(stop.getCommodities()[index].getItem()); 
+0

の情報にアクセスすることができます返されました!ありがとうございました –

関連する問題