在自定义列表视图中显示我的arraylist结果

时间:2011-09-14 10:54:56

标签: android arraylist listadapter layout-inflater

我想使用自定义列表视图显示我的arraylist结果。

现在我正在使用android布局显示我的结果。

setListAdapter(new StudentListAdapter(this,android.R.layout.simple_list_item_1, results));

我有两个要显示的字段

  1. Locimage(图片来自ImageUrl)
  2. Locname(并排)
  3. 文件位于:ERROR/AndroidRuntime(335): Caused by: java.lang.NullPointerException

4 个答案:

答案 0 :(得分:1)

由于您正在使用自定义列表适配器并且已覆盖getView方法,因此我认为以下行:

setListAdapter(new StudentListAdapter(this,android.R.layout.simple_list_item_1, results));

应该是:

setListAdapter(new StudentListAdapter(this, results));

答案 1 :(得分:0)

答案 2 :(得分:0)

最终,您将需要覆盖正在使用的适配器类的getView()方法。只需快速谷歌搜索就可以找到很多例子。

这里有一些非常基本的东西:http://sudarmuthu.com/blog/using-arrayadapter-and-listview-in-android-applications

这是一个更复杂的问题:http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

答案 3 :(得分:0)

试试这段代码

import java.util.ArrayList;
import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class FindPlaces extends Activity{

  private SQLiteDatabase DbLoc;
  ListView lv;
  private ArrayList<Fields> results = new ArrayList<Fields>();
  @Override
  public void onCreate(Bundle savedInstance) {
     super.onCreate(savedInstance);
    setContentView(R.layout.places);
    getallLocs();
    displayLocs();

}
private void displayLocs() {
    lv = (ListView)findViewById(R.id.listPlaces);
    lv.setAdapter(new StudentListAdapter(this,results));
}
class StudentListAdapter extends BaseAdapter<Fields>{
    private ArrayList<Fields> locationDetails;
    private Context mContext;

    public StudentListAdapter(Context context, ArrayList<Fields> results) {
        // TODO Auto-generated constructor stub
        System.out.println("Constructor StudentList Adapter...");
        this.locationDetails = results;
        this.mContext = context;
    }


    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return locationDetails.size();
    }

    @Override
    public Fields getItem(int position) {
        // TODO Auto-generated method stub
        return locationDetails.get(position);
    }
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return super.getItemId(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View v = convertView;
        if(v == null){
            LayoutInflater vl = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vl.inflate(R.layout.placeslist, null);
        }
        Fields o = locationDetails.get(position);

        if (o != null) {

            TextView iv = (TextView)v.findViewById(R.id.toptext);
            TextView tv_sNo = (TextView)v.findViewById(R.id.toptext1);
            iv.setText(o.getLocationName());                            
            tv_sNo.setText(o.getLocationImage());   

        }
       return v;
    }       
}
static class ViewHolder
{
    TextView Locationname;
    ImageView Locationimage;
}
private void getallLocs() {
    // TODO Auto-generated method stub
    try {
        DatabaseHelper dbHelper = new DatabaseHelper(
                this.getApplicationContext());
        DbLoc = dbHelper.getWritableDatabase();
        Cursor c = DbLoc.rawQuery("SELECT " + DatabaseHelper.LocationName+ " , " + DatabaseHelper.LocationImage + " FROM "
                + DatabaseHelper.LOCATIONTABLE , null);
                        if (c != null) {
            if (c.moveToFirst()) {
                do {
                    String LocationName= c.getString(c.getColumnIndex("LocationName"));
                    String Mobile = c.getString(c
                            .getColumnIndex("LocationImage"));
                    Fields p = new Fields(LocationName, Mobile);
                    results.add(p);

                } while (c.moveToNext());
            }
        }
    } catch (SQLiteException se) {
        Log.e(getClass().getSimpleName(),
        "Could not create or Open the database");
    } 
    finally { if (DbLoc != null) DbLoc.execSQL("DELETE FROM " +
            DatabaseHelper.FRIENDTABLE); DbLoc.execSQL("DELETE FROM " +
                    DatabaseHelper.LOCATIONTABLE);  
            DbLoc.execSQL("DROP TABLE IF EXISTS tablename"+ DatabaseHelper.FRIENDTABLE);
            DbLoc.execSQL("DROP TABLE IF EXISTS tablename"+ DatabaseHelper.LOCATIONTABLE);
            DbLoc.close();
    }
}
}