xlistview上拉和加载重新刷新+数据库添加字段+webview

在Androidstudiode上进行简单的数据展示和刷新.

1.MainActvty主界面的内容


public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {

    private XListView xlist;
    private List<Bean.DataBean> list;
    int id=1;
    private String s;
    String path = "http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457695555&loc_mode=5&lac=4527&cid=28883&iid=3835029558&device_id=12211880440&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api="+id;
    private MyAdapter myAdapter;
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
//            刷新数据
            myAdapter.notifyDataSetChanged();
            xlist.stopRefresh();
            xlist.stopLoadMore();
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//        初始化ID
        xlist = (XListView) findViewById(R.id.xlist);

//        调用请求数据
        indate();

//        刷新和下拉和监听
        xlist.setPullRefreshEnable(true);
        xlist.setPullLoadEnable(true);
        xlist.setXListViewListener(this);

//          点击某一新闻,通过webview加载详情页
        xlist.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

                Intent intent=new Intent(MainActivity.this,Main2Activity.class);

                intent.putExtra("url",list.get(position-1).getArticle_url());

                startActivity(intent);

                return false;
            }
        });
    }
    @Override
    public void onRefresh() {
         handler.postDelayed(new Runnable() {
             @Override
             public void run() {
//          实现上拉加载下一页,数据累加,url中os_api=1表示第一页
                 id++;
                 Gson gson = new Gson();
                 Bean bean = gson.fromJson(s, Bean.class);
                 list = bean.getData();
                 myAdapter = new MyAdapter();
                 xlist.setAdapter(myAdapter);

                 list.addAll(list);
             }
         },2000);
        handler.sendEmptyMessage(1);
    }

    @Override
    public void onLoadMore() {

        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                //实现下拉刷新,数据重新加载
                list.addAll(list);
            }
        },2000);
        handler.sendEmptyMessage(1);
    }


    //异步加载请求数据
    public void indate() {

        new AsyncTask<String,Void,String>(){
            private ByteArrayOutputStream outputStream;

            @Override
            protected String doInBackground(String... params) {

                try {
                    URL url = new URL(params[0]);
                    HttpURLConnection connetion= (HttpURLConnection) url.openConnection();
                    connetion.setRequestMethod("GET");
                    connetion.setConnectTimeout(3000);
                    int responseCode = connetion.getResponseCode();
                    if(responseCode==200){
                        InputStream inputStream = connetion.getInputStream();

                        outputStream = new ByteArrayOutputStream();
                        int len;
                        byte[] by=new byte[1024];

                        while ((len=inputStream.read(by))!=-1){
                            outputStream.write(by,0,len);
                        }

                        s = outputStream.toString();

                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return s;
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);

                Gson gson = new Gson();
                Bean bean = gson.fromJson(s, Bean.class);

                list = bean.getData();

//                添加数据库的foreach
                for (Bean.DataBean list2:list) {

                    String title = list2.getTitle();
                    String suo = list2.getSource();
//                  dao包
                    Dao dao = new Dao(MainActivity.this);
                //    添加的方法
                    Boolean add = dao.add(title, suo);

                    Toast.makeText(MainActivity.this,add+"",Toast.LENGTH_LONG).show();
                }

//                适配器,关联
                myAdapter = new MyAdapter();

                xlist.setAdapter(myAdapter);
            }
        }.execute(path);
    }


//    xlistview适配器
    class MyAdapter extends BaseAdapter{

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

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            convertView=View.inflate(MainActivity.this,R.layout.item,null);

            ImageView img= (ImageView) convertView.findViewById(R.id.img);
            TextView tv1= (TextView) convertView.findViewById(R.id.tv1);
            TextView tv2= (TextView) convertView.findViewById(R.id.tv2);

            //因为这网址的图片有问题所以下标必须是死值,否者就不能运行,打上注释是因为webview得是活值,那这就会报错
           // ImageLoader.getInstance().displayImage(list.get(0).getImage_list().get(0).getUrl(),img);
            tv1.setText(list.get(position).getTitle());
            tv2.setText(list.get(position).getSource());
            return convertView;
        }
    }
}
 
 
 
2.main.xml
<com.bawei.util.XListView
    android:id="@+id/xlist"
    android:layout_width="match_parent"
    android:layout_height="match_parent"></com.bawei.util.XListView>
3.item.xml
<ImageView
    android:id="@+id/img"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_launcher"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:id="@+id/tv1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text="123"
            android:textSize="20dp"/>
        <TextView
            android:id="@+id/tv2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="123"
            android:layout_marginTop="10dp"
            android:textSize="15dp"/>

    </LinearLayout>
 
 
 
 
4.MainActvty2也就是webviewde接受值
public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

//        初始化ID
        WebView web= (WebView) findViewById(R.id.web);

//        接受值
        Intent intent = getIntent();
        String url = intent.getStringExtra("url");

//        webview
        web.loadUrl(url);
    }
}
 
 
 
5.webview.xml
<WebView
    android:id="@+id/web"
    android:layout_width="match_parent"
    android:layout_height="match_parent"></WebView>
6.数据库别忘了继承
public class SQLile extends SQLiteOpenHelper {
    public SQLile(Context context) {
//        创建数据库
        super(context,"dd.db",null,1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
//建表
        db.execSQL("create table user(id integer primary key autoincrement,"
                + "title varchar(50),suo varchar(50))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}
7.dao包添加方法
public class Dao {

    private final SQLiteDatabase database;

    //上下文
    public Dao(Context context){

        SQLile sqLile = new SQLile(context);

//        具体方法
        database = sqLile.getWritableDatabase();

    }

//    添加的方法
    public Boolean add(String title,String suo){

        ContentValues values = new ContentValues();
        values.put("title",title);
        values.put("suo",suo);

        long insert = database.insert("user", null, values);

        if(insert!=-1){
            return true;
        }else {
            return false;
        }
    }
}
8.其他的数据库
    8.1 修改
	public Boolean update(String name,String nname) {
 		 ContentValues values = new ContentValues();
  		 values.put("name", name);
  
 		int update = sd.update("user", values, "name = ?", new String[] { nname });
  
  		  if (update != -1) {
                      return true;
                  } else {
                    return false;
                  }
                  }
8.2  删除:
              public Boolean delete(String name) {
                int delete = sd.delete("user", "name = ?", new String[] {name} );
                if (delete != -1) {
                   return true;
                }else{
                   return false;
                 }
                }
 	
8.3  条件查询
              public List<User> findone(String id){
  
                List<User> list = new ArrayList<User>();
  
              Cursor cursor = sd.query("user", null, "id = ?", new String[]{id}, null, null, null);
  
            while(cursor.moveToNext()){
   
                String name = cursor.getString(cursor.getColumnIndex("name"));
                String age = cursor.getString(cursor.getColumnIndex("age"));
   
                  User user = new User();
   
                   user.setName(name);
                   user.setAge(age);
   
                   list.add(user);
   
               }
                    return list;
            }
8.4  查询全部:
           public List<User> findall(){
  
                List<User> list = new ArrayList<User>();
  
                Cursor cursor = sd.query("user", null, null, null, null, null, null);
  
                while(cursor.moveToNext()){
   
                String name = cursor.getString(cursor.getColumnIndex("name"));
                String age = cursor.getString(cursor.getColumnIndex("age"));
   
                User user = new User();
   
                user.setName(name);
                user.setAge(age);
   
                list.add(user);
   
             }
                 return list;
            }
           }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android懒WebView可以通过Fragment的方式来实现,具体步骤如下: 1. 在布局文件中添加一个FrameLayout用于显示WebView。 2. 创建一个继承自Fragment的类,重写onCreateView()方法,在该方法中WebView,并使用setUserVisibleHint()方法来判断是否需要WebView。 3. 在Activity中,使用ViewPager来实现选项卡效果,每个选项卡对应一个WebViewFragment。 4. 在ViewPager的OnPageChangeListener中,通过调用WebViewFragment的setUserVisibleHint()方法来判断是否需要WebView。 下面是一些常见问题的解答: 1. 如何判断WebView是否需要重载? 可以在WebViewFragment中保存一个boolean类型的变量,用来表示WebView是否已经载过。在setUserVisibleHint()方法中判断该变量的值,如果为false,则WebView,否则不做任何操作。 2. 如何处理WebView的缓存? 可以在WebView的设置中设置WebViewClient,重写shouldInterceptRequest()方法,在该方法中判断是否需要使用缓存。例如,可以将静态资源缓存在本地,每次载时先判断本地是否有缓存,如果有则直接载本地缓存,否则重从网络上载。 3. 如何处理WebView的内存泄漏? 可以在WebViewFragment中重写onDestroyView()方法,调用WebView的destroy()方法来销毁WebView,确保WebView的资源被释放。同时,在Activity中,可以通过调用System.gc()方法来触发垃圾回收,释放WebView占用的内存。 希望以上内容能够对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值