离线下载的小demo

现在我们来看离线下载的demo
我们首先写的是xml中的小布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:background="#fff">
    <ImageView	//这个是个人的爱好给了一个返回的图标
        android:id="@+id/image_view"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/ca"
        />
    <TextView
        android:id="@+id/t"
        android:layout_width="200dp"
        android:layout_marginLeft="55dp"
        android:layout_height="45dp"
        android:gravity="center"
        android:text="离线下载"
        android:textSize="20sp"
        />
    <Button
        android:id="@+id/but_xia"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="下载"
        android:background="#fff"
        />
    <android.support.v7.widget.RecyclerView //注意一点是V7包下的widget
        android:id="@+id/recy_view"
        android:layout_below="@+id/xia"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v7.widget.RecyclerView>
</RelativeLayout>
以上的是xml的布局,现在来看一下Manactivity中的代码:
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;

import com.honey.xulits.adapter.RecyclerViewAdapter;
import com.honey.xulits.bean.Catogray;
import java.util.ArrayList;
import java.util.List;
public class XiaZaiActivity extends AppCompatActivity implements View.OnClickListener {
    private RecyclerView recy_view;   
 private Button but_xia;    
private List<Catogray> list;    
private CheckBox checkbox;   
 private ImageView image_view; 
   @Override    
protected void onCreate(Bundle savedInstanceState) {  
      super.onCreate(savedInstanceState);      
  setContentView(R.layout.activity_xia_zai);     
   //初始化        initView();   
     initData();    }  
      /**         * 初始化数据         */      
  private void initData() {        
    list = new ArrayList<>();    
        Catogray c = new Catogray(); 
        c.type = "top";         
   	c.name = "头条";          
  	list.add(c);
  
        c = new Catogray();   
	c.type = "yule"; 
 	c.name = "娱乐"; 
  	list.add(c);

 	c = new Catogray();
 	c.type = "xinwen";
 	c.name = "新闻";
  	list.add(c);

 	c = new Catogray(); 
 	c.type = "redian"; 
 	c.name = "热点"; 
  	list.add(c); 

 	c = new Catogray(); 
 	c.type = "shipin"; 
	c.name = "视频"; 
  	list.add(c);

	 //适配器中
            RecyclerViewAdapter adapter = new RecyclerViewAdapter(this, list);
            recy_view.setLayoutManager(new LinearLayoutManager(this));
            recy_view.setAdapter(adapter);
            adapter.setOnItemClickListener(new RecyclerViewAdapter.OnItemClickListener() {
                @Override
                public void onItemClickListener(int pos, View view) {
                    checkbox = view.findViewById(R.id.off_checkBox);
                    Catogray c = list.get(pos);
                    if (checkbox.isChecked()) {
                        checkbox.setChecked(false);
                        c.state = false;
                    } else {
                        checkbox.setChecked(true);
                        c.state = true;
                    }
                    //修改原有list的数据,根据pos,设置新的对象,然后更新list
                    list.set(pos, c);
                }
            });
        }
    /**
     * 获取控件
     */
    private void initView() {
        recy_view = (RecyclerView) findViewById(R.id.recy_view);
        but_xia = (Button) findViewById(R.id.but_xia);
        image_view= (ImageView) findViewById(R.id.image_view);
        //点击下载
        but_xia.setOnClickListener(this);
        image_view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }
    /**
     * 点击事件
     * @param view
     */
    @Override
    public void onClick(View view) {
        if(list!=null&&list.size()>0){
            for (Catogray catogray:list){
                if (catogray.state){
                    loadData(catogray.type);
                }
            }
        }
        for (Catogray c:list){
            System.out.println("state====" + c.state);
        }
    }
    /**
     * 只要有wifi,就下载离线数据,下载完成后保存到数据库
     *
     * @param type
     */
    private void loadData(final String type) {
    }
}
RecyclerViewAdapter这是适配器中用到了回调方法:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder>{
    private Context context;
    private List<Catogray> list;
    private OnItemClickListener onItemClickListener;

    public RecyclerViewAdapter(Context context, List<Catogray> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //初始化条目view
        View view= LayoutInflater.from(context).inflate(R.layout.item_xia_zai,null);
        MyViewHolder myViewHolder=new MyViewHolder(view);
        //实现自己的回调接口(注意回调接口,哪个场景下使用,就在哪里设置一下,才能起作用)
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onItemClickListener.onItemClickListener((Integer) view.getTag(), view);
            }
        });
        return myViewHolder;
    }
    /**
     * 这个方法主要用于处理逻辑(绘制ui数据)
     */
    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.name.setText(list.get(position).name);
        holder.itemView.setTag(position);
    }

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

    class MyViewHolder extends RecyclerView.ViewHolder{
        private TextView name;
        private CheckBox checkBox;
        public MyViewHolder(View itemView) {
            super(itemView);
            name=itemView.findViewById(R.id.name);
            checkBox=itemView.findViewById(R.id.off_checkBox);
        }
    }
    /**
     * 供调用者调用的接口(所以声明为public)
     */
    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }
    /**
     * 条目点击事件接口(recyclerview本身不支持点击事件,必须要自己写)
     */
    public interface OnItemClickListener {
        void onItemClickListener(int pos, View view);
    }
}
//bean类:
public class Catogray {
    public String id;
    public String type;
    public String name;
    public boolean state;
}
//适配器中的xml布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp"
    android:orientation="vertical"
    >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent">
        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:textSize="18sp"
            android:text="top"/>
        <CheckBox
            android:id="@+id/off_checkBox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"/>
    </RelativeLayout>
</LinearLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值