国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Xlistview實現(xiàn)上拉刷新下拉加載及item可單選

2019-11-09 15:08:57
字體:
來源:轉載
供稿:網友

實現(xiàn)思路: 1.首先要準備并拷入Xlistview的源代碼或者jar包,新建一個項目XlistviewDemo對Xlistview的源代碼形成依賴。 2.準備Xlistview的主布局文件Xlistview_layout.xml中添加Xlistview控件。 3.準備Xlistview的Item布局文件Xlistview_item.xml,里面兩個控件,一個放數據,一個放點擊可顯示的單選圖標。 4.新建一個adapter包和MyBaseAdapter繼承BaseAdapter。(并優(yōu)化) 5.在主activity中聲明并注冊Xlistview,初始化數據源和適配器,并設置給Xlistview實現(xiàn)代碼。(至此已實現(xiàn)listview)。最后讓Mainactivity實現(xiàn)IXListViewListener接口,重寫兩個方法實現(xiàn)上拉刷新和下拉加載功能。


1.首先要準備并拷入Xlistview的源代碼或者jar包,新建一個項目XlistviewDemo對Xlistview的源代碼形成依賴。

拷入源代碼形成依賴的方法待完善

2.準備Xlistview的主布局文件Xlistview_layout.xml中添加Xlistview控件。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:id="@+id/ll"android:layout_width="match_parent" android:layout_height="match_parent"tools:context="com.soft.qianyu.sw在外圍用LinearLayout包裹Xlistview(注意布局和Xlistview都要設置id)。


3.準備Xlistview的Item布局文件Xlistview_item.xml,里面兩個控件,一個放數據,一個放點擊可顯示的單選圖標。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"><TextView android:id="@+id/text" android:layout_width="0dp" android:layout_weight="9" android:layout_height="wrap_content" android:textSize="35sp" android:gravity="center" /> <TextView android:id="@+id/select_tv" android:visibility="invisible" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="√" android:textColor="@color/colorAccent" android:gravity="center" android:textSize="35sp" /></LinearLayout>

兩個TextView一個放置數據,另外一個點擊會改變visitible屬性。


4.新建一個adapter包和MyBaseAdapter繼承BaseAdapter。(并優(yōu)化)

public class MyBaseAdapter extends BaseAdapter { //一個BaseAdapter需要數據源和打氣筒,所以先聲明兩個變量 ArrayList<String> datas; LayoutInflater inflater; //為了能定位到點擊的位置,所以先聲明一個選中項的位置常量 public int selectedPosition = 0 ; //提供BaseAdapter適配器的構造器 public MyBaseAdapter(ArrayList<String> datas, Context context){ this.datas = datas; //inflater對象是從上下文中來獲取來的 inflater = LayoutInflater.from(context); } //獲得數據源的總數 @Override public int getCount() { return datas==null?0:datas.size(); } //獲得指定位置的數據源 @Override public Object getItem(int position) { //如果數據源為空,返回為空 return datas==null?null:datas.get(position); } //獲得指定位置的item的下標 @Override public long getItemId(int position) { return position; } //加載item布局并展示數據 @Override public View getView(int position, View convertView, ViewGroup viewGroup) { //為實現(xiàn)單布局加載和緩存控件,先要聲明者兩個變量 View view; ViewHolder holder;//實現(xiàn)單布局加載if (convertView==null){view=inflater.inflate(R.layout.xlistview_item,null);//實現(xiàn)緩存控件holder = new ViewHolder();holder.text = (TextView) view.findViewById(R.id.text);holder.select_tv = (TextView) view.findViewById(R.id.select_tv); //將holder與view綁定緩存 view.setTag(holder); }else { //直接顯示控件 view = convertView ; holder = (ViewHolder) view.getTag(); } //獲得指定位置的數據,若定位的是所選控件,則改變它的visible屬性。 String data = datas.get(position); if(selectedPosition== position) { holder.select_tv.setVisibility(View.VISIBLE); }else { holder.select_tv.setVisibility(View.INVISIBLE); } //將數據展示出來 holder.text.setText(data); return view; } //緩存控件的ViewHolder類 class ViewHolder{ TextView text ; TextView select_tv; }}

5.在MainActivity中聲明并注冊Xlistview,初始化數據源和適配器,并設置給Xlistview實現(xiàn)代碼。(至此將實現(xiàn)listview基本效果)

//implements XListView.IXListViewListener的意思是將會提供刷新和加載這兩個方法讓你進行重寫,你只要在里面放入你要處理的數據就可以了。public class MainActivity extends Activity implements XListView.IXListViewListener {//首先聲明各個變量,包括Xlistview控件,數據源datas,適配器adapter等//flag表示你每次刷新的時候的標記。 ArrayList<String> datas; MyBaseAdapter adapter; XListView xListView; boolean flag = false; @Override
PRotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化方法 init(); }//進行初始化 private void init() { //初始化xlistview xListView = (XListView) findViewById(R.id.xListView); //初始化數據源和數據 datas = new ArrayList<String>(); getData1(); //初始化適配器并為Xlistview綁定適配器 adapter = new MyBaseAdapter(datas,MainActivity.this); xListView.setAdapter(adapter);//以上方法即可實現(xiàn)簡單類似listview的展示效果,以下就是上拉刷新下拉加載的代碼部分 //為xlistview設置監(jiān)聽事件,重寫刷新加載的兩個方法 xListView.setXListViewListener(this); //設置xlistview允許上拉加載更多 xListView.setPullLoadEnable(true); //設置xlistview的item點擊事件,顯示單選功能 xListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {//點擊item的時候講adapter的selectedPosition的值設定為當前點擊的item位置(因為xlistview有個默認的標題欄占據了一個位置,所以要減1)adapter.selectedPosition = position-1 ;//只要是adapter里面的數據發(fā)生了變化就必須要調用notifyDataSetChanged通知改變 adapter.notifyDataSetChanged(); } }); }//初始化的數據 private void getData1() { datas.add("趙云"); datas.add("關羽"); datas.add("劉備"); datas.add("曹操"); datas.add("貂蟬"); datas.add("呂布"); datas.add("李師師"); } //刷新的數據 private void getData2() { datas.add("常勝將軍"); datas.add("漢壽亭候"); datas.add("仁君"); datas.add("奸雄"); datas.add("三國
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 河池市| 微博| 江永县| 商水县| 乌拉特后旗| 健康| 本溪市| 保亭| 陇西县| 庆城县| 怀仁县| 团风县| 普兰县| 克什克腾旗| 怀宁县| 利川市| 凤城市| 景东| 宁乡县| 静宁县| 合阳县| 蕲春县| 隆林| 甘南县| 五大连池市| 锡林浩特市| 西畴县| 苏州市| 永德县| 益阳市| 革吉县| 米易县| 天津市| 西青区| 陇西县| 全椒县| 南阳市| 金塔县| 玛纳斯县| 望江县| 余江县|