android--RecyclerView

主函数:

public class MainActivity extends AppCompatActivity {

    private RecyclerView list;
    private List<String> dateSource = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        //创造数据源
        for (int i = 0; i < 30; i++) {
            dateSource.add(i+"");
        }

        OkHttpClient okHttpClient = new OkHttpClient();
        final Request request = new Request.Builder().get().url("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1").build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                //没走的时候
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //获取响应体:
                ResponseBody body = response.body();
                byte[] bytes = body.bytes();

                String result = new String(bytes);
                Gson gson = new Gson();
                javabean javabean = gson.fromJson(result, javabean.class);

                //第二步:创建RecyclerView的适配器
                final MyRecylerAdapter myRecylerAdapter = new MyRecylerAdapter(MainActivity.this,javabean);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //更新UI线程
                        list.setAdapter(myRecylerAdapter);
                    }
                });

            }
        });

    }



    private void initView() {
        list = (RecyclerView) findViewById(R.id.list);
        
        StaggeredGridLayoutManager gridLayoutManager = new StaggeredGridLayoutManager(2, DividerItemDecoration.VERTICAL);
        list.setLayoutManager(gridLayoutManager);

    }
}

适配器(MyRecylerAdapter):

public class MyRecylerAdapter extends RecyclerView.Adapter<MyViewHolder>{
    private Context context;
    private javabean javabean;

    public MyRecylerAdapter(Context context, javabean javabean) {
        this.context = context;
        this.javabean = javabean;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        //创建viewHolder需要的视图
        View inflate = LayoutInflater.from(context).inflate(R.layout.item, null);
        //创建ViewHolder
        MyViewHolder myViewHolder = new MyViewHolder(inflate);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {
        List<javabean.DataBean> dataBeans = javabean.getData();
        javabean.DataBean dataBean = dataBeans.get(position);
        String pic = dataBean.getPic();
        String title = dataBean.getTitle();


        Picasso.with(context).load(pic).into(holder.image);
        holder.tv.setText(title);
    }

    @Override
    public int getItemCount() {
        List<javabean.DataBean> dataBeans = javabean.getData();
        return dataBeans.size();
    }
}

MyViewHolder():

class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView tv;
    public ImageView image;

    public MyViewHolder(View itemView) {
        super(itemView);
        tv = itemView.findViewById(R.id.tv);
        image = itemView.findViewById(R.id.image);
    }
}

item:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv"
        android:textSize="24sp"
        android:gravity="center_vertical"
        />
</LinearLayout>

对了 还有一个javabean

猜你喜欢

转载自blog.csdn.net/ykx_1448488568/article/details/81352254