html5中文学习网

您的位置: 首页 > android » 正文

Android中使用ListView实现漂亮的表格效果_Android

[ ] 已经帮助:人解决问题

在这里我们要使用Android ListView来实现显示股票行情,效果图如下,红色表示股票价格上涨,绿色表示股票价格下跌。3a5HTML5中文学习网 - HTML5先行者学习网

3a5HTML5中文学习网 - HTML5先行者学习网

第一步、定义color.xml如下:3a5HTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
3a5HTML5中文学习网 - HTML5先行者学习网
<?xml version="1.0" encoding="utf-8"?>3a5HTML5中文学习网 - HTML5先行者学习网
<resources>3a5HTML5中文学习网 - HTML5先行者学习网
    <color name="color_dark_grey">#808080</color>3a5HTML5中文学习网 - HTML5先行者学习网
    <color name="color_black">#000000</color>3a5HTML5中文学习网 - HTML5先行者学习网
    <color name="color_green">#00FF00</color>3a5HTML5中文学习网 - HTML5先行者学习网
    <color name="color_red">#FF0000</color>3a5HTML5中文学习网 - HTML5先行者学习网
    <color name="color_white">#FFFFFF</color>3a5HTML5中文学习网 - HTML5先行者学习网
</resources>3a5HTML5中文学习网 - HTML5先行者学习网
3a5HTML5中文学习网 - HTML5先行者学习网
第二步、定义style.xml文件如下:3a5HTML5中文学习网 - HTML5先行者学习网
复制代码 代码如下:
3a5HTML5中文学习网 - HTML5先行者学习网
<?xml version="1.0" encoding="utf-8"?>3a5HTML5中文学习网 - HTML5先行者学习网
<resources>3a5HTML5中文学习网 - HTML5先行者学习网
    <!-- Define the list items style begin -->3a5HTML5中文学习网 - HTML5先行者学习网
    <style name="list_item_seperator_layout">3a5HTML5中文学习网 - HTML5先行者学习网
        <item name="android:layout_width">fill_parent</item>3a5HTML5中文学习网 - HTML5先行者学习网
        <item name="android:layout_height">1dip</item>3a5HTML5中文学习网 - HTML5先行者学习网
        <item name="android:background">@color/color_dark_grey</item>3a5HTML5中文学习网 - HTML5先行者学习网
    </style>3a5HTML5中文学习网 - HTML5先行者学习网
    <style name="list_item_cell_seperator_layout">3a5HTML5中文学习网 - HTML5先行者学习网
        <item name="android:layout_width">1dip</item>3a5HTML5中文学习网 - HTML5先行者学习网
        <item name="android:layout_height">fill_parent</item>3a5HTML5中文学习网 - HTML5先行者学习网
        <item name="android:background">@color/color_dark_grey</item>3a5HTML5中文学习网 - HTML5先行者学习网
    </style>3a5HTML5中文学习网 - HTML5先行者学习网
    <!-- Define the list items style end -->3a5HTML5中文学习网 - HTML5先行者学习网
</resources>3a5HTML5中文学习网 - HTML5先行者学习网
3a5HTML5中文学习网 - HTML5先行者学习网
第三步、定义ListHeader的layout文件,stock_list_header.xml如下:3a5HTML5中文学习网 - HTML5先行者学习网
复制代码 代码如下:
3a5HTML5中文学习网 - HTML5先行者学习网
<?xml version="1.0" encoding="utf-8"?>3a5HTML5中文学习网 - HTML5先行者学习网
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"3a5HTML5中文学习网 - HTML5先行者学习网
    android:layout_width="fill_parent" 3a5HTML5中文学习网 - HTML5先行者学习网
    android:layout_height="wrap_content">3a5HTML5中文学习网 - HTML5先行者学习网
    <TableLayout 3a5HTML5中文学习网 - HTML5先行者学习网
        android:layout_width="fill_parent"3a5HTML5中文学习网 - HTML5先行者学习网
        android:layout_height="wrap_content" 3a5HTML5中文学习网 - HTML5先行者学习网
        android:stretchColumns="3">3a5HTML5中文学习网 - HTML5先行者学习网
        <TableRow 3a5HTML5中文学习网 - HTML5先行者学习网
            android:id="@+id/stock_list_header_row">3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <TextView 3a5HTML5中文学习网 - HTML5先行者学习网
                android:id="@+id/stock_list_header_code"3a5HTML5中文学习网 - HTML5先行者学习网
                android:text="@string/stock_code" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_width="60dip"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_height="wrap_content" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_gravity="center"3a5HTML5中文学习网 - HTML5先行者学习网
                android:padding="2dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <TextView 3a5HTML5中文学习网 - HTML5先行者学习网
                android:id="@+id/stock_list_header_symbol"3a5HTML5中文学习网 - HTML5先行者学习网
                android:text="@string/stock_symbol" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_width="wrap_content"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_height="wrap_content" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_gravity="center"3a5HTML5中文学习网 - HTML5先行者学习网
                android:padding="2dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <TextView 3a5HTML5中文学习网 - HTML5先行者学习网
                android:id="@+id/stock_list_header_last_price"3a5HTML5中文学习网 - HTML5先行者学习网
                android:text="@string/stock_last_price" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_width="60dip"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_height="wrap_content" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_gravity="center"3a5HTML5中文学习网 - HTML5先行者学习网
                android:padding="2dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <TextView 3a5HTML5中文学习网 - HTML5先行者学习网
                android:id="@+id/stock_list_header_price_change"3a5HTML5中文学习网 - HTML5先行者学习网
                android:text="@string/stock_price_change" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_width="50dip"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_height="wrap_content" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_gravity="center"3a5HTML5中文学习网 - HTML5先行者学习网
                android:padding="2dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <TextView 3a5HTML5中文学习网 - HTML5先行者学习网
                android:id="@+id/stock_list_header_price_change_percentage"3a5HTML5中文学习网 - HTML5先行者学习网
                android:text="@string/stock_price_change_percent"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_width="50dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_height="wrap_content"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_gravity="center" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:padding="2dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
        </TableRow>3a5HTML5中文学习网 - HTML5先行者学习网
    </TableLayout>3a5HTML5中文学习网 - HTML5先行者学习网
</LinearLayout>3a5HTML5中文学习网 - HTML5先行者学习网
3a5HTML5中文学习网 - HTML5先行者学习网
<View style="@style/list_item_cell_seperator_layout"/>是用来在每个单元格之间显示出一条垂直的分割线,使单元格之间相互分割开来。3a5HTML5中文学习网 - HTML5先行者学习网

第四步、定义ListItem的布局文件,stock_list_item.xml如下:3a5HTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
3a5HTML5中文学习网 - HTML5先行者学习网
<?xml version="1.0" encoding="utf-8"?>3a5HTML5中文学习网 - HTML5先行者学习网
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"3a5HTML5中文学习网 - HTML5先行者学习网
    android:orientation="horizontal" 3a5HTML5中文学习网 - HTML5先行者学习网
    android:layout_width="fill_parent"3a5HTML5中文学习网 - HTML5先行者学习网
    android:layout_height="wrap_content">3a5HTML5中文学习网 - HTML5先行者学习网
    <TableLayout 3a5HTML5中文学习网 - HTML5先行者学习网
        android:id="@+id/stock_list_item_table_layout"3a5HTML5中文学习网 - HTML5先行者学习网
        android:layout_width="fill_parent" 3a5HTML5中文学习网 - HTML5先行者学习网
        android:layout_height="wrap_content"3a5HTML5中文学习网 - HTML5先行者学习网
        android:stretchColumns="3">3a5HTML5中文学习网 - HTML5先行者学习网
        <TableRow 3a5HTML5中文学习网 - HTML5先行者学习网
            android:id="@+id/stock_list_row">3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <TextView 3a5HTML5中文学习网 - HTML5先行者学习网
                android:id="@+id/stock_code" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_width="60dip"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_height="wrap_content" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_gravity="center"3a5HTML5中文学习网 - HTML5先行者学习网
                android:padding="2dip" />3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <TextView 3a5HTML5中文学习网 - HTML5先行者学习网
                android:id="@+id/stock_symbol"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_width="1dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_height="wrap_content"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_gravity="center" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:padding="2dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <TextView android:id="@+id/stock_last_price"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_width="60dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_height="wrap_content"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_gravity="center" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:padding="2dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <TextView 3a5HTML5中文学习网 - HTML5先行者学习网
                android:id="@+id/stock_change_price"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_width="50dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_height="wrap_content"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_gravity="center" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:padding="2dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <TextView 3a5HTML5中文学习网 - HTML5先行者学习网
                android:id="@+id/stock_change_percentage"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_width="50dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_height="wrap_content"3a5HTML5中文学习网 - HTML5先行者学习网
                android:layout_gravity="center" 3a5HTML5中文学习网 - HTML5先行者学习网
                android:padding="2dip" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
            <View 3a5HTML5中文学习网 - HTML5先行者学习网
                style="@style/list_item_cell_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
                />3a5HTML5中文学习网 - HTML5先行者学习网
        </TableRow>3a5HTML5中文学习网 - HTML5先行者学习网
    </TableLayout>3a5HTML5中文学习网 - HTML5先行者学习网
</LinearLayout>3a5HTML5中文学习网 - HTML5先行者学习网
3a5HTML5中文学习网 - HTML5先行者学习网
第五步、定义stock list activity的layout文件stock_list.xml如下:3a5HTML5中文学习网 - HTML5先行者学习网
复制代码 代码如下:
3a5HTML5中文学习网 - HTML5先行者学习网
<?xml version="1.0" encoding="utf-8"?>3a5HTML5中文学习网 - HTML5先行者学习网
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"3a5HTML5中文学习网 - HTML5先行者学习网
    android:orientation="vertical" 3a5HTML5中文学习网 - HTML5先行者学习网
    android:layout_width="fill_parent"3a5HTML5中文学习网 - HTML5先行者学习网
    android:layout_height="fill_parent">3a5HTML5中文学习网 - HTML5先行者学习网
    <View 3a5HTML5中文学习网 - HTML5先行者学习网
        style="@style/list_item_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
        />3a5HTML5中文学习网 - HTML5先行者学习网
    <include 3a5HTML5中文学习网 - HTML5先行者学习网
        layout="@layout/stock_list_header" 3a5HTML5中文学习网 - HTML5先行者学习网
        />3a5HTML5中文学习网 - HTML5先行者学习网
    <View 3a5HTML5中文学习网 - HTML5先行者学习网
        style="@style/list_item_seperator_layout" 3a5HTML5中文学习网 - HTML5先行者学习网
        />3a5HTML5中文学习网 - HTML5先行者学习网
    <ListView 3a5HTML5中文学习网 - HTML5先行者学习网
        android:id="@+id/stock_list_view"3a5HTML5中文学习网 - HTML5先行者学习网
        android:layout_width="fill_parent" 3a5HTML5中文学习网 - HTML5先行者学习网
        android:layout_height="fill_parent"3a5HTML5中文学习网 - HTML5先行者学习网
        android:scrollingCache="true" 3a5HTML5中文学习网 - HTML5先行者学习网
        android:cacheColorHint="#00000000"3a5HTML5中文学习网 - HTML5先行者学习网
        android:fastScrollEnabled="true" 3a5HTML5中文学习网 - HTML5先行者学习网
        android:focusable="true"3a5HTML5中文学习网 - HTML5先行者学习网
        android:divider="@color/color_dark_grey" 3a5HTML5中文学习网 - HTML5先行者学习网
        android:dividerHeight="1dip" 3a5HTML5中文学习网 - HTML5先行者学习网
        />3a5HTML5中文学习网 - HTML5先行者学习网
</LinearLayout>3a5HTML5中文学习网 - HTML5先行者学习网
3a5HTML5中文学习网 - HTML5先行者学习网
<View style="@style/list_item_seperator_layout"/>是为了在Header的上下方显示一条线来分割header和list.可能有人会问,为什么这里不直接用ListView控件的header呢?3a5HTML5中文学习网 - HTML5先行者学习网

这是因为我们为了使ListView在滚动过程中header始终固定在List的最上方,不会随着ListView的滚动而消失。3a5HTML5中文学习网 - HTML5先行者学习网

到此为止,layout布局文件基本上定义完了,下面就是如何在代码中实现了。3a5HTML5中文学习网 - HTML5先行者学习网

StockListActivity.java3a5HTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
3a5HTML5中文学习网 - HTML5先行者学习网
package com.android.msoft.mfinance.ui;3a5HTML5中文学习网 - HTML5先行者学习网

import com.android.msoft.mfinance.R;3a5HTML5中文学习网 - HTML5先行者学习网
import com.android.msoft.mfinance.provider.Stock;3a5HTML5中文学习网 - HTML5先行者学习网
import com.android.msoft.mfinance.provider.StockMarket.StockMarketColumns;3a5HTML5中文学习网 - HTML5先行者学习网
import com.android.msoft.mfinance.ui.MFinancePreferenceActivity.BGColor;3a5HTML5中文学习网 - HTML5先行者学习网
import com.android.msoft.mfinance.ui.MFinancePreferenceActivity.TextSize;3a5HTML5中文学习网 - HTML5先行者学习网
import com.android.msoft.mfinance.ui.MFinancePreferenceActivity.UpDownColor;3a5HTML5中文学习网 - HTML5先行者学习网

import android.app.Activity;3a5HTML5中文学习网 - HTML5先行者学习网
import android.content.Intent;3a5HTML5中文学习网 - HTML5先行者学习网
import android.content.SharedPreferences;3a5HTML5中文学习网 - HTML5先行者学习网
import android.database.Cursor;3a5HTML5中文学习网 - HTML5先行者学习网
import android.os.Bundle;3a5HTML5中文学习网 - HTML5先行者学习网
import android.preference.PreferenceManager;3a5HTML5中文学习网 - HTML5先行者学习网
import android.util.Log;3a5HTML5中文学习网 - HTML5先行者学习网
import android.util.TypedValue;3a5HTML5中文学习网 - HTML5先行者学习网
import android.view.Menu;3a5HTML5中文学习网 - HTML5先行者学习网
import android.view.MenuInflater;3a5HTML5中文学习网 - HTML5先行者学习网
import android.view.MenuItem;3a5HTML5中文学习网 - HTML5先行者学习网
import android.view.WindowManager;3a5HTML5中文学习网 - HTML5先行者学习网
import android.widget.ListView;3a5HTML5中文学习网 - HTML5先行者学习网
import android.widget.TableRow;3a5HTML5中文学习网 - HTML5先行者学习网
import android.widget.TextView;3a5HTML5中文学习网 - HTML5先行者学习网

public class StockListActivity extends Activity {3a5HTML5中文学习网 - HTML5先行者学习网

 private static final String TAG = "com.android.msoft.mfinance.ui.StockListActivity";3a5HTML5中文学习网 - HTML5先行者学习网
 private SharedPreferences mPreference;3a5HTML5中文学习网 - HTML5先行者学习网
 private TextView mCodeTextView;3a5HTML5中文学习网 - HTML5先行者学习网
 private TextView mSymbolTextView;3a5HTML5中文学习网 - HTML5先行者学习网
 private TextView mLastPriceTextView;3a5HTML5中文学习网 - HTML5先行者学习网
 private TextView mPriceChangeTextView;3a5HTML5中文学习网 - HTML5先行者学习网
 private TextView mPriceChangePercentageTextView;3a5HTML5中文学习网 - HTML5先行者学习网
 private ListView mStockListView;3a5HTML5中文学习网 - HTML5先行者学习网
 private TableRow mStockListHeader;3a5HTML5中文学习网 - HTML5先行者学习网
 private float mTextSize;3a5HTML5中文学习网 - HTML5先行者学习网

 private int mBgColor;3a5HTML5中文学习网 - HTML5先行者学习网
 private int mDownTextColor;3a5HTML5中文学习网 - HTML5先行者学习网
 private int mUpTextColor;3a5HTML5中文学习网 - HTML5先行者学习网
 private Cursor mStockListCursor;3a5HTML5中文学习网 - HTML5先行者学习网

 @Override3a5HTML5中文学习网 - HTML5先行者学习网
 protected void onCreate(Bundle savedInstanceState) {3a5HTML5中文学习网 - HTML5先行者学习网
  super.onCreate(savedInstanceState);3a5HTML5中文学习网 - HTML5先行者学习网

  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,3a5HTML5中文学习网 - HTML5先行者学习网
    WindowManager.LayoutParams.FLAG_FULLSCREEN);3a5HTML5中文学习网 - HTML5先行者学习网
  setContentView(R.layout.stock_list);3a5HTML5中文学习网 - HTML5先行者学习网

  mPreference = PreferenceManager.getDefaultSharedPreferences(this);3a5HTML5中文学习网 - HTML5先行者学习网

  refreshDisplayPreference();3a5HTML5中文学习网 - HTML5先行者学习网

  mStockListHeader = (TableRow) findViewById(R.id.stock_list_header_row);3a5HTML5中文学习网 - HTML5先行者学习网
  mCodeTextView = (TextView) findViewById(R.id.stock_list_header_code);3a5HTML5中文学习网 - HTML5先行者学习网
  mSymbolTextView = (TextView) findViewById(R.id.stock_list_header_symbol);3a5HTML5中文学习网 - HTML5先行者学习网
  mLastPriceTextView = (TextView) findViewById(R.id.stock_list_header_last_price);3a5HTML5中文学习网 - HTML5先行者学习网
  mPriceChangeTextView = (TextView) findViewById(R.id.stock_list_header_price_change);3a5HTML5中文学习网 - HTML5先行者学习网
  mPriceChangePercentageTextView = (TextView) findViewById(R.id.stock_list_header_price_change_percentage);3a5HTML5中文学习网 - HTML5先行者学习网

  mStockListView = (ListView) findViewById(R.id.stock_list_view);3a5HTML5中文学习网 - HTML5先行者学习网

  refreshStockListHeader();3a5HTML5中文学习网 - HTML5先行者学习网

  mStockListCursor = getContentResolver().query(3a5HTML5中文学习网 - HTML5先行者学习网
    Stock.CONTENT_URI_STOCK_WITH_MARKET, null, null, null,3a5HTML5中文学习网 - HTML5先行者学习网
    StockMarketColumns.CHANGE_PRICE_PERCENT + " DESC");3a5HTML5中文学习网 - HTML5先行者学习网

  StockListAdapter listViewAdpater = new StockListAdapter(this,3a5HTML5中文学习网 - HTML5先行者学习网
    mStockListCursor);3a5HTML5中文学习网 - HTML5先行者学习网
  mStockListView.setAdapter(listViewAdpater);3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 @Override3a5HTML5中文学习网 - HTML5先行者学习网
 protected void onDestroy() {3a5HTML5中文学习网 - HTML5先行者学习网
  if (!mStockListCursor.isClosed()) {3a5HTML5中文学习网 - HTML5先行者学习网
   mStockListCursor.close();3a5HTML5中文学习网 - HTML5先行者学习网
  }3a5HTML5中文学习网 - HTML5先行者学习网

  super.onDestroy();3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 @Override3a5HTML5中文学习网 - HTML5先行者学习网
 public boolean onCreateOptionsMenu(Menu menu) {3a5HTML5中文学习网 - HTML5先行者学习网

  MenuInflater inflater = getMenuInflater();3a5HTML5中文学习网 - HTML5先行者学习网
  inflater.inflate(R.menu.stock_list_option_menu, menu);3a5HTML5中文学习网 - HTML5先行者学习网
  return super.onCreateOptionsMenu(menu);3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 @Override3a5HTML5中文学习网 - HTML5先行者学习网
 public boolean onOptionsItemSelected(MenuItem item) {3a5HTML5中文学习网 - HTML5先行者学习网
  switch (item.getItemId()) {3a5HTML5中文学习网 - HTML5先行者学习网
  case R.id.stock_list_option_menu_settings:3a5HTML5中文学习网 - HTML5先行者学习网
   Intent intent = new Intent(this, MFinancePreferenceActivity.class);3a5HTML5中文学习网 - HTML5先行者学习网
   startActivity(intent);3a5HTML5中文学习网 - HTML5先行者学习网
   break;3a5HTML5中文学习网 - HTML5先行者学习网
  }3a5HTML5中文学习网 - HTML5先行者学习网

  return super.onOptionsItemSelected(item);3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 private void refreshDisplayPreference() {3a5HTML5中文学习网 - HTML5先行者学习网

  UpDownColor upAndDownColor = MFinancePreferenceActivity.UpDownColor3a5HTML5中文学习网 - HTML5先行者学习网
    .valueOf(mPreference.getString("up_down_color", "RED_GREEN"));3a5HTML5中文学习网 - HTML5先行者学习网

  if (0 == upAndDownColor.value) { // UP: RED DOWN: GREEN3a5HTML5中文学习网 - HTML5先行者学习网
   mUpTextColor = getResources().getColor(R.color.color_red);3a5HTML5中文学习网 - HTML5先行者学习网
   mDownTextColor = getResources().getColor(R.color.color_green);3a5HTML5中文学习网 - HTML5先行者学习网
  } else { // DOWN: RED UP: GREEN3a5HTML5中文学习网 - HTML5先行者学习网
   mUpTextColor = getResources().getColor(R.color.color_green);3a5HTML5中文学习网 - HTML5先行者学习网
   mDownTextColor = getResources().getColor(R.color.color_red);3a5HTML5中文学习网 - HTML5先行者学习网
  }3a5HTML5中文学习网 - HTML5先行者学习网

  TextSize textSize = MFinancePreferenceActivity.TextSize3a5HTML5中文学习网 - HTML5先行者学习网
    .valueOf(mPreference.getString("text_size", "NORMAL"));3a5HTML5中文学习网 - HTML5先行者学习网
  mTextSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,3a5HTML5中文学习网 - HTML5先行者学习网
    textSize.value, getResources().getDisplayMetrics());3a5HTML5中文学习网 - HTML5先行者学习网

  int colorResId = R.color.color_black;3a5HTML5中文学习网 - HTML5先行者学习网
  BGColor bgColor = MFinancePreferenceActivity.BGColor3a5HTML5中文学习网 - HTML5先行者学习网
    .valueOf(mPreference.getString("bg_color", "BLACK"));3a5HTML5中文学习网 - HTML5先行者学习网

  switch (bgColor.value) {3a5HTML5中文学习网 - HTML5先行者学习网
  case 0:3a5HTML5中文学习网 - HTML5先行者学习网
   colorResId = R.color.color_black;3a5HTML5中文学习网 - HTML5先行者学习网
   break;3a5HTML5中文学习网 - HTML5先行者学习网

  case 1:3a5HTML5中文学习网 - HTML5先行者学习网
   colorResId = R.color.color_white;3a5HTML5中文学习网 - HTML5先行者学习网
   break;3a5HTML5中文学习网 - HTML5先行者学习网

  default:3a5HTML5中文学习网 - HTML5先行者学习网
   Log.e(TAG, "invalid bg color");3a5HTML5中文学习网 - HTML5先行者学习网
  }3a5HTML5中文学习网 - HTML5先行者学习网

  mBgColor = getResources().getColor(colorResId);3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 public float getTextSize() {3a5HTML5中文学习网 - HTML5先行者学习网
  return mTextSize;3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 public int getBgColor() {3a5HTML5中文学习网 - HTML5先行者学习网
  return mBgColor;3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 public int getUpTextColor() {3a5HTML5中文学习网 - HTML5先行者学习网
  return mUpTextColor;3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 public int getDownTextColor() {3a5HTML5中文学习网 - HTML5先行者学习网
  return mDownTextColor;3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 private void refreshStockListHeader() {3a5HTML5中文学习网 - HTML5先行者学习网

  mCodeTextView.setTextSize(mTextSize);3a5HTML5中文学习网 - HTML5先行者学习网
  mSymbolTextView.setTextSize(mTextSize);3a5HTML5中文学习网 - HTML5先行者学习网
  mLastPriceTextView.setTextSize(mTextSize);3a5HTML5中文学习网 - HTML5先行者学习网
  mPriceChangeTextView.setTextSize(mTextSize);3a5HTML5中文学习网 - HTML5先行者学习网
  mPriceChangePercentageTextView.setTextSize(mTextSize);3a5HTML5中文学习网 - HTML5先行者学习网

  mStockListHeader.setBackgroundColor(mBgColor);3a5HTML5中文学习网 - HTML5先行者学习网
  mStockListView.setBackgroundColor(mBgColor);3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网
}3a5HTML5中文学习网 - HTML5先行者学习网

3a5HTML5中文学习网 - HTML5先行者学习网

StockListAdapter.java3a5HTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
3a5HTML5中文学习网 - HTML5先行者学习网
package com.android.msoft.mfinance.ui;3a5HTML5中文学习网 - HTML5先行者学习网

import com.android.msoft.mfinance.provider.Stock.StockColumns;3a5HTML5中文学习网 - HTML5先行者学习网
import com.android.msoft.mfinance.provider.StockMarket.StockMarketColumns;3a5HTML5中文学习网 - HTML5先行者学习网
import android.content.Context;3a5HTML5中文学习网 - HTML5先行者学习网
import android.database.Cursor;3a5HTML5中文学习网 - HTML5先行者学习网
import android.util.Log;3a5HTML5中文学习网 - HTML5先行者学习网
import android.view.View;3a5HTML5中文学习网 - HTML5先行者学习网
import android.view.ViewGroup;3a5HTML5中文学习网 - HTML5先行者学习网
import android.widget.BaseAdapter;3a5HTML5中文学习网 - HTML5先行者学习网

public class StockListAdapter extends BaseAdapter {3a5HTML5中文学习网 - HTML5先行者学习网

 private static final String TAG = "com.android.msoft.mfinance.ui.StockListAdapter";3a5HTML5中文学习网 - HTML5先行者学习网
 private Cursor mStockListCursor;3a5HTML5中文学习网 - HTML5先行者学习网
 private Context mContext;3a5HTML5中文学习网 - HTML5先行者学习网

 private final int sCodeIndex;3a5HTML5中文学习网 - HTML5先行者学习网
 private final int sSymbolIndex;3a5HTML5中文学习网 - HTML5先行者学习网
 private final int sBoardIndex;3a5HTML5中文学习网 - HTML5先行者学习网
 private final int sLastPriceIndex;3a5HTML5中文学习网 - HTML5先行者学习网
 private final int sChangePriceIndex;3a5HTML5中文学习网 - HTML5先行者学习网
 private final int sChangePricePercentIndex;3a5HTML5中文学习网 - HTML5先行者学习网

 public StockListAdapter(Context context, Cursor cursor) {3a5HTML5中文学习网 - HTML5先行者学习网
  mStockListCursor = cursor;3a5HTML5中文学习网 - HTML5先行者学习网
  mContext = context;3a5HTML5中文学习网 - HTML5先行者学习网

  sCodeIndex = mStockListCursor.getColumnIndex(StockColumns.CODE);3a5HTML5中文学习网 - HTML5先行者学习网
  sSymbolIndex = mStockListCursor.getColumnIndex(StockColumns.SYMBOL);3a5HTML5中文学习网 - HTML5先行者学习网
  sBoardIndex = mStockListCursor.getColumnIndex(StockColumns.BOARD);3a5HTML5中文学习网 - HTML5先行者学习网
  sLastPriceIndex = mStockListCursor3a5HTML5中文学习网 - HTML5先行者学习网
    .getColumnIndex(StockMarketColumns.LAST_PRICE);3a5HTML5中文学习网 - HTML5先行者学习网
  sChangePriceIndex = mStockListCursor3a5HTML5中文学习网 - HTML5先行者学习网
    .getColumnIndex(StockMarketColumns.CHANGE_PRICE);3a5HTML5中文学习网 - HTML5先行者学习网
  sChangePricePercentIndex = mStockListCursor3a5HTML5中文学习网 - HTML5先行者学习网
    .getColumnIndex(StockMarketColumns.CHANGE_PRICE_PERCENT);3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 @Override3a5HTML5中文学习网 - HTML5先行者学习网
 public int getCount() {3a5HTML5中文学习网 - HTML5先行者学习网
  Log.d(TAG, "Stock list count:" + mStockListCursor.getCount());3a5HTML5中文学习网 - HTML5先行者学习网
  return mStockListCursor.getCount();3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 @Override3a5HTML5中文学习网 - HTML5先行者学习网
 public Object getItem(int position) {3a5HTML5中文学习网 - HTML5先行者学习网
  return null;3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 @Override3a5HTML5中文学习网 - HTML5先行者学习网
 public long getItemId(int position) {3a5HTML5中文学习网 - HTML5先行者学习网
  return position;3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

 @Override3a5HTML5中文学习网 - HTML5先行者学习网
 public View getView(int position, View convertView, ViewGroup parent) {3a5HTML5中文学习网 - HTML5先行者学习网
  StockListItem listItem;3a5HTML5中文学习网 - HTML5先行者学习网

  mStockListCursor.moveToPosition(position);3a5HTML5中文学习网 - HTML5先行者学习网
  if (null == convertView) {3a5HTML5中文学习网 - HTML5先行者学习网
   String code = mStockListCursor.getString(sCodeIndex);3a5HTML5中文学习网 - HTML5先行者学习网
   String symbol = mStockListCursor.getString(sSymbolIndex);3a5HTML5中文学习网 - HTML5先行者学习网
   String board = mStockListCursor.getString(sBoardIndex);3a5HTML5中文学习网 - HTML5先行者学习网
   float lastPrice = mStockListCursor.getFloat(sLastPriceIndex);3a5HTML5中文学习网 - HTML5先行者学习网
   float changePrice = mStockListCursor.getFloat(sChangePriceIndex);3a5HTML5中文学习网 - HTML5先行者学习网
   float changePercent = mStockListCursor3a5HTML5中文学习网 - HTML5先行者学习网
     .getFloat(sChangePricePercentIndex);3a5HTML5中文学习网 - HTML5先行者学习网

   listItem = new StockListItem(mContext, code, symbol, board,3a5HTML5中文学习网 - HTML5先行者学习网
     lastPrice, changePrice, changePercent);3a5HTML5中文学习网 - HTML5先行者学习网
  } else {3a5HTML5中文学习网 - HTML5先行者学习网
   listItem = (StockListItem) convertView;3a5HTML5中文学习网 - HTML5先行者学习网
  }3a5HTML5中文学习网 - HTML5先行者学习网

  return listItem;3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

}3a5HTML5中文学习网 - HTML5先行者学习网

3a5HTML5中文学习网 - HTML5先行者学习网

StockListItem.java3a5HTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
3a5HTML5中文学习网 - HTML5先行者学习网
package com.android.msoft.mfinance.ui;3a5HTML5中文学习网 - HTML5先行者学习网

import com.android.msoft.mfinance.R;3a5HTML5中文学习网 - HTML5先行者学习网
import android.content.Context;3a5HTML5中文学习网 - HTML5先行者学习网
import android.view.LayoutInflater;3a5HTML5中文学习网 - HTML5先行者学习网
import android.widget.LinearLayout;3a5HTML5中文学习网 - HTML5先行者学习网
import android.widget.TextView;3a5HTML5中文学习网 - HTML5先行者学习网

public class StockListItem extends LinearLayout {3a5HTML5中文学习网 - HTML5先行者学习网

 public StockListItem(Context context, String code, String symbol,3a5HTML5中文学习网 - HTML5先行者学习网
   String board, float lastPrice, float changePrice,3a5HTML5中文学习网 - HTML5先行者学习网
   float changePercent) {3a5HTML5中文学习网 - HTML5先行者学习网
  super(context);3a5HTML5中文学习网 - HTML5先行者学习网

  StockListActivity stockListActivity = (StockListActivity) context;3a5HTML5中文学习网 - HTML5先行者学习网
  float textSize = stockListActivity.getTextSize();3a5HTML5中文学习网 - HTML5先行者学习网

  LayoutInflater factory = LayoutInflater.from(context);3a5HTML5中文学习网 - HTML5先行者学习网
  factory.inflate(R.layout.stock_list_item, this);3a5HTML5中文学习网 - HTML5先行者学习网

  TextView codeTextView = (TextView) findViewById(R.id.stock_code);3a5HTML5中文学习网 - HTML5先行者学习网
  codeTextView.setTextSize(textSize);3a5HTML5中文学习网 - HTML5先行者学习网
  codeTextView.setText(code);3a5HTML5中文学习网 - HTML5先行者学习网

  TextView symbolTextView = (TextView) findViewById(R.id.stock_symbol);3a5HTML5中文学习网 - HTML5先行者学习网
  symbolTextView.setTextSize(textSize);3a5HTML5中文学习网 - HTML5先行者学习网
  symbolTextView.setText(symbol);3a5HTML5中文学习网 - HTML5先行者学习网

  TextView lastPriceTextView = (TextView) findViewById(R.id.stock_last_price);3a5HTML5中文学习网 - HTML5先行者学习网
  lastPriceTextView.setTextSize(textSize);3a5HTML5中文学习网 - HTML5先行者学习网
  lastPriceTextView.setText(Float.toString(lastPrice));3a5HTML5中文学习网 - HTML5先行者学习网

  TextView changePriceTextView = (TextView) findViewById(R.id.stock_change_price);3a5HTML5中文学习网 - HTML5先行者学习网
  changePriceTextView.setTextSize(textSize);3a5HTML5中文学习网 - HTML5先行者学习网
  changePriceTextView.setText(Float.toString(changePrice));3a5HTML5中文学习网 - HTML5先行者学习网

  TextView ChangePercentTextView = (TextView) findViewById(R.id.stock_change_percentage);3a5HTML5中文学习网 - HTML5先行者学习网
  ChangePercentTextView.setTextSize(textSize);3a5HTML5中文学习网 - HTML5先行者学习网
  ChangePercentTextView.setText(Float.toString(changePercent));3a5HTML5中文学习网 - HTML5先行者学习网

  if (changePrice > 0) {3a5HTML5中文学习网 - HTML5先行者学习网
   int textColor = stockListActivity.getUpTextColor();3a5HTML5中文学习网 - HTML5先行者学习网

   // codeTextView.setTextColor(textColor);3a5HTML5中文学习网 - HTML5先行者学习网
   // symbolTextView.setTextColor(textColor);3a5HTML5中文学习网 - HTML5先行者学习网
   lastPriceTextView.setTextColor(textColor);3a5HTML5中文学习网 - HTML5先行者学习网
   changePriceTextView.setTextColor(textColor);3a5HTML5中文学习网 - HTML5先行者学习网
   ChangePercentTextView.setTextColor(textColor);3a5HTML5中文学习网 - HTML5先行者学习网
  } 3a5HTML5中文学习网 - HTML5先行者学习网
  else if (changePrice < 0)3a5HTML5中文学习网 - HTML5先行者学习网
  {3a5HTML5中文学习网 - HTML5先行者学习网
            int textcolor="stockListActivity.getDownTextColor(); codetextview.settextcolor(textcolor);3a5HTML5中文学习网 - HTML5先行者学习网
   symboltextview.settextcolor(textcolor); 3a5HTML5中文学习网 - HTML5先行者学习网
   lastpricetextview.settextcolor(textcolor); changepricetextview.settextcolor(textcolor);3a5HTML5中文学习网 - HTML5先行者学习网
      changepercenttextview.settextcolor(textcolor)3a5HTML5中文学习网 - HTML5先行者学习网
     }3a5HTML5中文学习网 - HTML5先行者学习网
    }3a5HTML5中文学习网 - HTML5先行者学习网
 }3a5HTML5中文学习网 - HTML5先行者学习网

3a5HTML5中文学习网 - HTML5先行者学习网

到此就大功告成了,这个例子我们是通过View来画线条分割各个单元格的,另外我们还可以通过定义不同的背景色,通过背景色来达到相似的效果,这个不难,就不写了。3a5HTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助