中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

listfragment怎么在Android項目中使用

發布時間:2020-11-21 15:24:59 來源:億速云 閱讀:144 作者:Leah 欄目:移動開發

本篇文章給大家分享的是有關listfragment怎么在Android項目中使用,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

1、fragment簡介

我對fragment的理解是基于activity的,對于大多數的基本開始發時,我們最先遇到的就是用activity來開發。

簡單的例子,新建一個最基本的Android空白界面,我們得到的是一個可以顯示一個空白界面的app。一個activity對應著一個layout。

但是fragment則是基于activity,突破了已經固定好的layout的限制,在原有的layout中,把布局元素作為容器,動態容納新的layout。

這樣就等于在一個activity中可以擁有多個界面。

2、ListFragment實例講解

最終效果

listfragment怎么在Android項目中使用

最終效果如上圖所示

2.1、首先我們先談一下,準備工作activity_main的布局:activity_main.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">

  <include android:id="@+id/layout_bar" layout="@layout/layout_title"/>

  <FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="1" >
    </FrameLayout>


  <include layout="@layout/layout_bottom"/>

</LinearLayout>

這里的線性布局,包含了三個部分(1)layout_title(2)fragment_container(3)layout_bottom

其中(2)fragment_container就是用來動態加載listfragment的地方。

2.2、第二點我們看一下被動態加載到fragment_container中的布局:文件fragment_order.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">


  <ListView
    android:id="@+id/android:list"
    android:scrollbars="none"
    android:dividerHeight="0dp"
    android:divider="#00000000"
    android:listSelector="#00000000"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</RelativeLayout>

分析以上的xml可以看出,為了動態加載一個listfragment,我們為其編寫了一個擁有ListView組件的xml,這一點是必須的。

2.3、第三點,我們看一看到底是如何在activity中用什么方式動態的加載listfragment

我們看一下MainActivity.Java的關鍵部分

  private FragmentManager manager;
@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
//*********************************************
    manager = getFragmentManager();
manager.beginTransaction().add(R.id.fragment_container, homefragment, "article").commit();
//*********************************************

我特殊標記的地方就是用來動態加載的代碼。

為了加載fragment,我們要編寫一個fragment類,這個類的對象我們可以看到在add函數中被用到,也是在這個地方,將fragmen加載。

使用fragmentManager的add函數來加載,它有三個參數(1)fragment被加載的位置(R.id.fragment_container)(2)一個fragment對象,這個對象的編寫也很重要,等會講到。(3)為動態加載的fragment起一個名字,這一項,隨便起。

2.4、第四步,fragment對象的類的編寫

上文中第二步的fragment_order.xml就是被這個類來使用,實例化,正是因為有了這個類才能夠將fragment實例化,于是才能被動態加載。

public class Fragment_order extends ListFragment
{
  private MainActivity parentActivity;
  private String[] values = new String[] { "快餐店", "烤食店", "燒魚店", "甜食店", "蔬菜店",
      "融合菜店","面條店" };
  private int[] images = new int[] { R.drawable.fastfood,
      R.drawable.roastfood, R.drawable.fishfood,
      R.drawable.sweetfood, R.drawable.vegetables,
      R.drawable.multifood,R.drawable.noodles };
//用來初始化listfragmnet每一條項目的資源

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
               Bundle savedInstanceState) {

    return inflater.inflate(R.layout.fragment_order, container, false);
//這里用inflate函數,在初始化創建view時返回fragment_order.xml實例
  }


//下面的部分則是用于將每一條項目的資源放入到listview的每一個條目中去
  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    for (int i = 0; i < values.length; i++) {
      Map<String, Object> listItem = new HashMap<String, Object>();
      listItem.put("values", values[i]);
      listItem.put("images", images[i]);
      list.add(listItem);
    }

    SimpleAdapter adapter = new SimpleAdapter(getActivity(),list,
        R.layout.list_item, new String[] { "values", "images" },
        new int[] { R.id.storeName, R.id.storePic });
    setListAdapter(adapter);

  }

主要想講一講simpleAdapter的用法,因為這很重要,如果數據不能和layout綁定,那么就會不能運行成功。

使用simpleAdapter是很重要的。為什么要使用simpleAdapter的原因很簡單,綁定數據和layout的工作不可能完全由程序自動完成,數據和layout的對應關系需要自己來定,adapter就是為了把對應的數據綁到對應的layout上

simpleAdapter算是Adapter中比較簡單好用的一個

listitem中用了Map<string,object>的數據格式,代表了每一行內容其中的數據。

list則是一連串的Map<string,object>

我們看simpleAdapter的參數,總共5個:(1)得到當前的activity(2)已經將數據存好了的list(3)又是一個xml,這個xml是用來作為listview的一條項目的layout,這樣一個項目的外觀才會被確定(4)這個數組指明了在Map<string,object>中,數據的名稱代號是什么,這樣adapter在取list的每個條目的數據時,才有參照。這個參數同時和下一個參數有很大關系(5)這個參數是layout中的id,和上一個參數對應著。由上一個參數的數據的名稱作為指導,將每一行的數據可以對應到相應的ID。

2.5、最后把listview的每一行條目的layout代碼寫一下:list_item.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  xmlns:app="http://schemas.android.com/apk/res-auto">

  <LinearLayout
    android:id="@+id/contactitem_layout"
    
    android:layout_height="65.0dip"

    android:paddingLeft="12dip"
    android:background="@drawable/border"
    android:padding="2dp"
    android:weightSum="1">
      <RelativeLayout

      android:id="@+id/avatar_container"
      android:layout_width="match_parent"
      android:layout_marginTop="4dp"
      android:layout_height="wrap_content"
      android:layout_alignParentLeft="true"
  >
      <ImageView
        android:id="@+id/storePic"
        android:layout_width="50.0dip"
        android:layout_height="50.0dip"
        android:src="@drawable/head" />
      <TextView
        android:id="@+id/storeName"
        
        android:layout_toRightOf="@+id/storePic"
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:text="No data" />
      </RelativeLayout>

  </LinearLayout>

</LinearLayout>最后祝大家新年快樂,雞年大吉吧!!!

以上就是listfragment怎么在Android項目中使用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高邑县| 乌拉特前旗| 桐柏县| 昭觉县| 凤翔县| 竹山县| 体育| 扎囊县| 武宣县| 临沂市| 利辛县| 白河县| 诸城市| 准格尔旗| 云南省| 涞水县| 黄浦区| 广河县| 高邑县| 锡林浩特市| 化隆| 海安县| 壤塘县| 长乐市| 双辽市| 七台河市| 天柱县| 海安县| 全南县| 宽甸| 金昌市| 余姚市| 阿瓦提县| 新安县| 婺源县| 若羌县| 卢龙县| 绵竹市| 平潭县| 肇源县| 隆德县|