listView with baseadapter上没有任何显示

时间:2016-02-01 17:16:34

标签: android listview baseadapter

每一个, 我是android系统的初学者,

我创建了一个可以获取特定数据的小应用,例如来自银行网站的外汇汇率,

此应用使用Jsoup,ListView,BaseAdapter等...

最后,唯一的问题是listView没有任何显示,

任何人都可以告诉我,如何解决它。

感谢。

Category.java

public class Category
{
String bank_name;
String page_url;

Category(String bank_name,String url)
{
    this.bank_name=bank_name;
    this.page_url=url;
}

@Override
public String toString()
{
    return bank_name;
}
}

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.content.*;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;

public class MainActivity extends Activity
{    
    ArrayList<Category> items;

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

        items=new ArrayList<Category>();

        items.add(new Category("台灣銀行","http://rate.bot.com.tw/Pages/Static/UIP003.zh-TW.htm"));

    ArrayAdapter<Category> adapter = new ArrayAdapter<Category>(this , android.R.layout.simple_list_item_1 ,items);
    ListView lv = (ListView)findViewById(R.id.lv);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(itemClick);

}

OnItemClickListener itemClick = new OnItemClickListener()
{
    @Override
    public void onItemClick(AdapterView<?> av , View v , int position , long id)
    {
        Category category = items.get(position);
        Intent intent = new Intent();
        intent.setClass(MainActivity.this , RateActivity.class );
        intent.putExtra("bank_name", category.bank_name);
        intent.putExtra("page_url" , category.page_url);
        startActivity(intent);
    }

};

RateBean.java

public class RateBean
{
    private String currency;
    private String cashBuy;
    private String cashSold;
    private String spotBuy;
    private String spotSold;

public RateBean()
{
    currency = "";
    cashBuy = "";
    cashSold = "";
    spotBuy = "";
    spotSold = "";
}
public RateBean(String [] strArr)
{
    this.currency=strArr[0];
    this.cashBuy=strArr[1];
    this.cashSold=strArr[2];
    this.spotBuy=strArr[3];
    this.spotSold=strArr[4];
}
public RateBean(String currency , String cashBuy , String cashSold , String spotBuy ,String spotSold)
{
    setCurrency(currency);
    setCashBuy(cashBuy);
    setCashSold(cashSold);
    setSpotBuy(spotBuy);
    setSpotSold(spotSold);
}

//Currency setter and getter
public void setCurrency(String currency)
{
    this.currency = currency ;
}
public String getCurrency()
{
    return currency;
}

//Cash buy  setter and getter
public void setCashBuy(String cashBuy)
{
    this.cashBuy = cashBuy;
}
public String getCashBuy()
{
    return cashBuy;
}

//Cash sold setter and getter
public void setCashSold(String cashSold)
{
    this.cashSold = cashSold;
}
public String getCashSold()
{
    return cashSold;
}

//Spot buy setter and getter
public void setSpotBuy(String spotBuy)
{
    this.spotBuy = spotBuy;
}
public String getSpotBuy()
{
    return spotBuy;
}

//Spot sold setter and getter
public void setSpotSold(String spotSold)
{
    this.spotSold = spotSold;
}
public String getSpotSold()
{
    return spotSold;
}

}

RateActivity.java

import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.util.ArrayList;

public class RateActivity extends ListActivity
{
    Context context ;
    ArrayList<RateBean> rateBean_item;


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

    TextView updateTime = (TextView)findViewById(R.id.updateTime_textView);
    Intent intent = getIntent();
    String category = intent.getStringExtra("bank_name");
    String page_url = intent.getStringExtra("page_url");
    setTitle(category);
    context=this;

    ConnectThread thread = new ConnectThread(context , rateBean_item , page_url , updateTime);
    thread.start();



}


public class ConnectThread extends Thread
{
    Context context;
    ArrayList<RateBean> rateBean_item;
    String page_url ;
    TextView updateTime;
    RateAdapter adapter;
    RateBean rateBean;

    int i =0;


    public ConnectThread(Context context , ArrayList<RateBean> rateBean_item , String page_url , TextView updateTime )
    {
        this.context=context;
        this.rateBean_item=rateBean_item;
        this.page_url=page_url;
        this.updateTime=updateTime;
    }
    @Override
    public void run()
    {

        try
        {
            String currency="";
            String cashBuy="";
            String cashSold="";
            String spotBuy="";
            String spotSold="";
            Document doc = Jsoup.connect(page_url).get();
            rateBean_item = new ArrayList<>();

            String temp=doc.select("td[style=width:326px;text-align:left;vertical-align:top;color:#0000FF;font-size:11pt;font-weight:bold;]").text();
            String time=temp.substring(12);
            updateTime.setText("匯率更新時間:\n" + time);


            for( Element title:doc.select("td.titleLeft"))
            {
                currency=title.text();

                if( i < doc.select("td.decimal").size())
                {
                    cashBuy=doc.select("td.decimal").eq(i++).text();
                    cashSold=doc.select("td.decimal").eq(i++).text();
                    spotBuy=doc.select("td.decimal").eq(i++).text();
                    spotSold=doc.select("td.decimal").eq(i++).text();

                    rateBean = new RateBean( a , b , c ,d , e );
                    rateBean_item.add(rateBean);
                }

            }

            adapter = new RateAdapter(context , rateBean_item);
            setListAdapter(adapter);
            adapter.notifyDataSetChanged();



        }
        catch( Exception exception )
        {
            exception.printStackTrace();
        }
    }

}
}

RateAdapter.java

import java.util.ArrayList;

import android.util.Log;
import android.widget.BaseAdapter;
import android.view.*;
import android.widget.*;
import android.content.*;

public class RateAdapter extends BaseAdapter
{

    private LayoutInflater inflater;
    private ArrayList<RateBean> list ;

    public RateAdapter()
    {

    }
    public RateAdapter(Context context , ArrayList<RateBean> list )
    {
        this.inflater = LayoutInflater.from(context);
        this.list = list;
    }

    @Override
    public int getCount()
    {
        return list.size();
    }
    @Override
    public Object getItem(int position)
    {
        return list.get(position);
    }
    @Override
    public long getItemId(int position)
    {
        return position;
    }
    public static class ViewHolder
    {
        TextView currency_name;
        TextView cash_buy;
        TextView cash_sold;
        TextView spot_buy;
        TextView spot_sold;
    }

@Override
public View getView( int position , View convertView , ViewGroup parent)
{
    ViewHolder holder;
    if(convertView == null)
    {
        convertView = inflater.inflate(R.layout.rate_item , null);

        holder = new ViewHolder();
        holder.currency_name = (TextView)convertView.findViewById(R.id.xml_currency);
        holder.cash_buy = (TextView)convertView.findViewById(R.id.xml_cashBuy);
        holder.cash_sold = (TextView)convertView.findViewById(R.id.xml_cashSold);
        holder.spot_buy = (TextView)convertView.findViewById(R.id.xml_spotBuy);
        holder.spot_sold = (TextView)convertView.findViewById(R.id.xml_spotSold);

        convertView.setTag(holder);
    }
    else
    {
        holder = (ViewHolder)convertView.getTag();
    }

    RateBean rateItem = list.get(position);

    holder.currency_name.setText(rateItem.getCurrency());
    holder.cash_buy.setText(rateItem.getCashBuy());
    holder.cash_sold.setText(rateItem.getCashSold());
    holder.spot_buy.setText(rateItem.getSpotBuy());
    holder.spot_sold.setText(rateItem.getSpotSold());
    return convertView;

}
}

activity_main.xml中

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
    android:id="@+id/title_textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="銀行查詢選擇"/>

<ListView
    android:id="@+id/lv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>


</LinearLayout>

activity_rate_show.xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<TextView
    android:id="@+id/updateTime_textView"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:hint="updateTime"/>
<Button
    android:id="@+id/fresh_button"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:onClick="onClick"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="@string/button_fresh"/>
</LinearLayout>>
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp">
    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1.5"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="@string/currency"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="@string/cash_buy"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="@string/cash_sold"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="@string/spot_buy"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="@string/spot_sold"/>
</LinearLayout>
<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</ListView>


</LinearLayout>

rate_item.xml

<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/xml_currency"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1.25"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:hint="text"/>
<TextView
    android:id="@+id/xml_cashBuy"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:hint="text"/>
<TextView
    android:id="@+id/xml_cashSold"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:hint="text"/>
<TextView
    android:id="@+id/xml_spotBuy"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:hint="text"/>
<TextView
    android:id="@+id/xml_spotSold"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:hint="text"/>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

  

&LT; ListView的
    机器人:ID =&#34; @ + ID / LV&#34;
    机器人:layout_width =&#34; WRAP_CONTENT&#34;
    机器人:layout_height =&#34; WRAP_CONTENT&#34; /&GT;

您的列表视图需要一个高度,它不能是wrap_content。给它一个像500dpmatch_parent的高度。