如何在Android开发中动态加载的list列表数据

如何在Android开发中动态加载的list列表数据,第1张

Android中加载list列表数据主要是通过Adapter实现,可用显示列表的控件如下:

Listview

GridView

ExpandListview

显示具体的数据需要通过Adapter实现,Android目前有4种Adapter:

ArrayAdapter

SimpleAdapter

SimpleCursorAdapter

BaseAdapter ( 自定义Adapter)

具体 *** 作步骤 ( 以自定义Adapter为例):

在xml中定义Listview布局

在代码中通过ID找到Listview控件

构建Adapter对象,新建一个类继承自BaseAdapter,重写它的四个方法,具体如下代码

构造好适配器后设置Listview的adapter对象为新建的适配器,界面即可显示数据

在数据变动的地方,只需要调用adapter的notifyDataSetChanged方法即可刷新界面

package com.beryl.gougou

import android.content.Context

import android.view.LayoutInflater

import android.view.View

import android.view.ViewGroup

import android.widget.BaseAdapter

import java.util.List

/**

 * Created by yt on 16/11/14.

 */

public class MyAdapter extends BaseAdapter {

    private List<String> datalist

    private LayoutInflater inflater

    

    public MyAdapter(Context context ,List<String> datalist){

        this.datalist = datalist

        inflater = LayoutInflater.from(context)

    }

    

    @Override

    public int getCount() {

        return datalist.size()

    }

    @Override

    public Object getItem(int position) {

        return datalist.get(position)

    }

    @Override

    public long getItemId(int position) {

        return position

    }

    @Override

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

        //此处参考网上的view缓存机制,示例demo不多说明

        return null

    }

    

   

}

实现代码如下:  

package com.app.test01

import java.util.ArrayList

import java.util.HashMap

import java.util.List

import org.json.JSONArray

import org.json.JSONException

import org.json.JSONObject

import android.R.integer

import android.app.Activity

import android.os.Bundle

import android.view.ContextMenu

import android.view.LayoutInflater

import android.view.MenuItem

import android.view.View

import android.view.ContextMenu.ContextMenuInfo

import android.widget.AbsListView

import android.widget.AbsListView.OnScrollListener

import android.widget.AdapterView

import android.widget.AdapterView.AdapterContextMenuInfo

import android.widget.BaseAdapter

import android.widget.ListView

import android.widget.TextView

import android.widget.Toast

import com.app.adapter.MyWeixinJSON

import com.app.adapter.MyWeixinList

/**

* 点击  追加数据的ListView

* @author 402-9

*

*/

public class ListViewPage extends Activity {

 private ListView lv

 private BaseAdapter mJson

 private JSONArray mData = new JSONArray()// JSON数据源

 private View view_page_footer// 底部视图

 private int num = 1// 加载数据计数

 private int count = 50// 总数据

 

// private boolean flag

 @Override

 protected void onCreate(Bundle savedInstanceState) {

   // TODO Auto-generated method stub

   super.onCreate(savedInstanceState)

   setContentView(R.layout.weixin)

   lv = (ListView) findViewById(R.id.lv)

   getJSONArray(mData)

   

   mJson = new MyWeixinJSON(mData, this)

   view_page_footer = LayoutInflater.from(this).inflate(

       R.layout.view_page_footer, null)

   lv.addFooterView(view_page_footer)// 添加底部视图

   TextView text_page = (TextView) view_page_footer.findViewById(R.id.text_page)

   text_page.setOnClickListener(new View.OnClickListener() {

     // 点击按钮 追加数据 并通知适配器

     @Override

     public void onClick(View v) {

       // TODO Auto-generated method stub

       TextView tv = (TextView) v

       tv.setText("正在加载中...")

       getJSONArray(mData)

       tv.setText("下一页")

       mJson.notifyDataSetChanged()

     }

   })

   lv.setAdapter(mJson)// 绑定适配器

 }

 /** 数据源JSONArray */

 private void getJSONArray(JSONArray jArray) {

   try {

     for (int i = 1i <= 5i++) {

       JSONObject jsonObject = new JSONObject()

       jsonObject.put("title", "姓名" + num++)

       jsonObject.put("time", "9月29日")

       jsonObject.put("info", "我通过了你的好友验证请求,现在我们可以开始对话啦")

       jsonObject.put("img", R.drawable.special_spring_head2)

       jArray.put(jsonObject)

       if (num == count) {

         lv.removeFooterView(view_page_footer)

         Toast.makeText(this, "没有更多数据了...", Toast.LENGTH_LONG)

             .show()

       }

     }

   } catch (Exception e) {

     // TODO: handle exception

   }

 }

 

}

 

   其中,所添加的底部视图,只有一个供点击追加的按钮:

   <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

   android:layout_width="match_parent"

   android:layout_height="wrap_content"

   android:orientation="vertical"

   android:padding="5dp">

   <TextView

       android:id="@+id/text_page"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:text="下一页"

    android:gravity="center"/>

</LinearLayout>

其中,所添加的底部视图,只有一个供点击追加的按钮:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:orientation="vertical" 

    android:padding="5dp">

    <TextView

        android:id="@+id/text_page"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="下一页" 

     android:gravity="center"/>

</LinearLayout>

效果图

点击“下一页”,在ListView后追加数据。

追加完成后,清除底部视图。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11374586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存