Android 使用baseadapter的listView上没有任何显示

Android 使用baseadapter的listView上没有任何显示,android,listview,baseadapter,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_nam

每个人, 我是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);
    }

};
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();
        }
    }

}
}
RateActivity.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);
    }

};
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();
        }
    }

}
}
导入android.app.Activity;
导入android.app.ListActivity;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
导入org.jsoup.nodes.Element;
导入org.jsoup.select.Elements;
导入java.util.ArrayList;
公共类RateActivity扩展了ListActivity
{
语境;
ArrayList rateBean_项;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u rate\u show);
TextView updateTime=(TextView)findViewById(R.id.updateTime\u TextView);
Intent=getIntent();
字符串类别=intent.getStringExtra(“银行名称”);
String page_url=intent.getStringExtra(“page_url”);
片名(类别);
上下文=这个;
ConnectThread线程=新的ConnectThread(上下文、rateBean\u项目、页面\u url、更新时间);
thread.start();
}
公共类ConnectThread扩展线程
{
语境;
ArrayList rateBean_项;
字符串页面地址;
文本视图更新时间;
速率适配器;
RateBean RateBean;
int i=0;
公共连接线程(上下文上下文、ArrayList rateBean\u项、字符串页面\u url、TextView更新时间)
{
this.context=context;
this.rateBean\u item=rateBean\u item;
this.page\u url=page\u url;
this.updateTime=updateTime;
}
@凌驾
公开募捐
{
尝试
{
字符串currency=“”;
字符串cashBuy=“”;
字符串cashsaled=“”;
字符串spotBuy=“”;
字符串spotsell=“”;
Document doc=Jsoup.connect(page_url.get();
rateBean_item=新的ArrayList();
String temp=doc.select(“td[style=width:326px;text align:left;vertical align:top;color:#0000FF;font size:11pt;font-weight:bold;]”)text();
字符串时间=临时子字符串(12);
updateTime.setText(“匯率更新時間:\n“+时间);
对于(元素标题:doc.select(“td.titleleleft”))
{
货币=title.text();
如果(i
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;

}
}
import java.util.ArrayList;
导入android.util.Log;
导入android.widget.BaseAdapter;
导入android.view.*;
导入android.widget.*;
导入android.content.*;
公共类RateAdapter扩展了BaseAdapter
{
私人充气机;
私有数组列表;
公共费率适配器()
{
}
公共RateAdapter(上下文上下文,ArrayList列表)
{
this.inflater=layoutiner.from(上下文);
this.list=列表;
}
@凌驾
public int getCount()
{
返回list.size();
}
@凌驾
公共对象getItem(int位置)
{
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置)
{
返回位置;
}
公共静态类视图持有者
{
text查看货币名称;
TextView现金购买;
TextView现金销售;
TextView现货购买;
TextView现货销售;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图)
{
视窗座;
if(convertView==null)
{
convertView=充气机充气(R.layout.rate_项,空);
holder=新的ViewHolder();
holder.currency\u name=(TextView)convertView.findViewById(R.id.xml\u currency);
holder.cash\u buy=(TextView)convertView.findViewById(R.id.xml\u cashBuy);
holder.cash\u sell=(TextView)convertView.findViewById(R.id.xml\u cashSeld);
holder.spot\u buy=(TextView)convertView.findViewById(R.id.xml\u spotBuy);
holder.spot_sell=(TextView)convertView.findViewById(R.id.xml_spotsell);
convertView.setTag(支架);
}
其他的
{
holder=(ViewHolder)convertView.getTag();
}
RateBean rateItem=list.get(位置);
holder.currency_name.setText(rateItem.getCurrency());
holder.cash_buy.setText(rateItem.getCashBuy());
holder.cash_sell.setText(rateItem.getCashSold());
holder.spot_buy.setText(rateem.getSpotBuy());
holder.spot_sell.setText(rateItem.getspotsell());
返回视图;
}
}
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>


您的listview需要一个高度,它不能是
wrap\u content
。给它一个像
500dp
match\u parent

@AnshulJain不要担心他的国际文本。它只是字符串中的文本;他想放什么就放什么