在列表视图中显示arraylist

时间:2013-04-15 06:11:09

标签: android listview arraylist

根据此example更改代码。 相关文件如下所示。 我没有使用该示例的imageicon部分,因为我不需要它。

Pending.java

public class Pending {

public String title;
public Pending(){
    super();
}

public Pending(String title) {
    super();

    this.title = title;
}

}

PendingAdatapter.java

public PendingAdapter(Context context, int layoutResourceId, Pending[] data) {

    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
   PendingHolder holder = null;

   if(row == null)
   {
       LayoutInflater inflater = ((Activity)context).getLayoutInflater();
       row = inflater.inflate(layoutResourceId, parent, false);

       holder = new PendingHolder();

       holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);

       row.setTag(holder);
   }
   else
   {
       holder = (PendingHolder)row.getTag();
   }

   Pending weather = data[position];
   holder.txtTitle.setText(weather.title);

   return row;

}

static class PendingHolder
{

    TextView txtTitle;
}

MainActivity.java

WayDataBase way1=new WayDataBase(Dashboard.this);
    Pending weather_data[] = new Pending[]
            {

                new Pending(way1.returnFormName().toString())
            };

    PendingAdapter adapter = new PendingAdapter(this, 
            R.layout.listview_item_row, weather_data);
    lstvw=(ListView)findViewById(R.id.forms_list);

    View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
    lstvw.addHeaderView(header);

    lstvw.setAdapter(adapter);

数据库的 returnFormname函数

public ArrayList<String> returnFormName()
{

    openOrCreateDatabase();
    createlandtTable();
    createrefertable();
    createassettable();
    createofficeusetable();
    ArrayList<String> form = new ArrayList<String>();

    int appcount=0,refercount=0,assetcount=0,officecount=0;
    appcount=db.rawQuery("select * from "+TableNameis+";" ,null).getCount();
    refercount=db.rawQuery("select * from "+ReferenceTable+";" ,null).getCount();
    assetcount=db.rawQuery("select * from "+AssetTable+";" ,null).getCount();
    officecount=db.rawQuery("select * from "+OfficeUse+";" ,null).getCount();
    if(appcount==0)
    {
        form.add("Applicant");
    }
    if(refercount==0)
    {
        form.add("Reference");
    }
    if(assetcount==0)
    {
        form.add("Asset Details");
    }
    if(officecount==0)
    {
        form.add("Office Use");
    }

    return form;
}

2 个答案:

答案 0 :(得分:0)

您的问题就在这一行formname.add(way1.returnFormName().toString());。我不知道WayDataBase返回什么,但您要做的是将way1中的每个值添加到formname。你所做的是以String形式返回对象way1.returnFormName()的单个表示,这就是toString()所做的。

way1.returnFormName()获取每个值,并将其自身添加到formname

注意:要将intdouble转换为String,只需将空字符串连接到它。防爆。

int number = 5;
String some;
some = number +"";

答案 1 :(得分:0)

像这样更改你的代码

<强> MainActivity.java

WayDataBase way1=new WayDataBase(Dashboard.this);
ArrayList<String> weather_data = way1.returnFormName();    

PendingAdapter adapter = new PendingAdapter(this, R.layout.listview_item_row, weather_data);
lstvw=(ListView)findViewById(R.id.forms_list);

View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
lstvw.addHeaderView(header);

lstvw.setAdapter(adapter);

<强> PendingAdatapter.java

public PendingAdapter(Context context, int layoutResourceId, ArrayList<String> data) {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
   View row = convertView;
   PendingHolder holder = null;

   if(row == null)
   {
      LayoutInflater inflater = ((Activity)context).getLayoutInflater();
      row = inflater.inflate(layoutResourceId, parent, false);

      holder = new PendingHolder();

      holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);

      row.setTag(holder);
   }
   else
   {
      holder = (PendingHolder)row.getTag();
   }

   holder.txtTitle.setText(data.get(position));
   return row;
}
相关问题