2017-06-06 14 views
0

私のAndroidアプリでは、オブジェクトのJSONArrayを取得します。これを直接recycleViewアダプタに渡すことは可能ですか?Android - JSONArrayからRecycleViewアダプタへ?

私が見たrecycleViewの実装は、まずJSONArrayデータを取得し、配列内の各オブジェクトをループし、その値をカスタムPOJO(Plain old javaオブジェクト)に転送し、その配列の配列リストに追加します。カスタムJavaオブジェクトを作成し、このarrayListをrecycleViewアダプタに使用します。

しかし、それは私のアプリ、私は潜在的に配列内に多くのオブジェクトを持つことができます。この方法ですべてをループするのは遅い/非効率的だと私は信じています。

JSONArrayをrecycleViewアダプタに直接渡すことはありますか?

+0

はい、可能です。試してみたときの試行錯誤を表示してください。 –

+0

@ JK140解決策として答えを受け入れてください – SoroushA

答えて

1

もちろん可能です。アダプターをカスタマイズするだけです:

public class Adapter extends RecyclerView.Adapter<MoviesAdapter.MyViewHolder> { 

private JSONArray array; 

public class MyViewHolder extends RecyclerView.ViewHolder { 
    public TextView property; 

    public MyViewHolder(View view) { 
     super(view); 
     property = (TextView) view.findViewById(R.id.some_view); 

    } 
} 


public Adapter(JSONArray arr) { 
    this.array = arr; 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.list_row, parent, false); 

    return new MyViewHolder(itemView); 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    Movie movie = moviesList.get(position); 
    holder.property.setText(array.get(position).property); 

} 

@Override 
public int getItemCount() { 
    return array.length(); 
} 
} 
関連する問題