Aboo Sidhu
Aboo Sidhu

Reputation: 31

Android making a listview with numbered items

I want to make a dynamic ListView with numbered items. Here I have retrieved values from SQLite database into the ListView and actually it is numbered according to their id's which are stored in database. But I'm using a dynamic list view, so I want to show numbered items starting from 1 in each time I load the ListView. For example people booking flight tickets for different dates and flight authorities will display a final ListView for the current date including persons who booked for that date.

 consider today is 10-12-2014
 person A booked ticket for the date 12-12-2014, so his "id" might be "1" in database.
 person B booked ticket for the date 13-12-2014,so his "id" might be "2" in database.
 person c booked ticket for the date 13-12-2014,so his "id" might be "3" in database.


    but when the day "13-12-2014" comes person B's id should be "1"(no need to have any connection with database, just enough a numberd representation to   show today's list is this. 

like 
 1.person B
 2.person C

  thats all.

This is my displayadapter class:

 public class DisplayAdapter extends BaseAdapter {

private Context mContext;
private ArrayList<String> id;
private ArrayList<String>name;
private ArrayList<String>phone;


public DisplayAdapter(Context c, ArrayList<String> id,ArrayList<String> name, ArrayList<String> phone) {
    this.mContext = c;

    this.id = id;
    this.name = name;
    this.phone = phone;
}

public int getCount() {
    // TODO Auto-generated method stub

    return id.size();
}

public Object getItem(int position) {
    // TODO Auto-generated method stub


    return null;
}

public long getItemId(int position) {

    // TODO Auto-generated method stub
    return 0;
}

public View getView(int pos, View child, ViewGroup parent) {
    Holder mHolder;
    LayoutInflater layoutInflater;
    if (child == null) {
        layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        child = layoutInflater.inflate(R.layout.viewthem, null);
        mHolder = new Holder();
        mHolder.txt_id = (TextView) child.findViewById(R.id.d);
        mHolder.txt_name = (TextView) child.findViewById(R.id.nm);
        mHolder.txt_phone = (TextView) child.findViewById(R.id.ph);
        child.setTag(mHolder);
    } else {
        mHolder = (Holder) child.getTag();
    }
    mHolder.txt_id.setText(id.get(pos));
    mHolder.txt_name.setText(name.get(pos));
    mHolder.txt_phone.setText(phone.get(pos));

    return child;
}

public class Holder {
    TextView txt_id;
    TextView txt_name;
    TextView txt_phone;
}


}

This is my dbhelper class:

    mydb = new DBhelper(this);

        SQLiteDatabase database = mydb.getWritableDatabase();
        Cursor mCursor=database.rawQuery("SELECT * FROM contacts WHERE dt='"+d+"'", null);

        userId.clear();
        user_name.clear();
        user_phone.clear();
        if (mCursor.moveToFirst()) {
            do {
                userId.add(mCursor.getString(mCursor.getColumnIndex(DBhelper.CONTACTS_COLUMN_ID)));
                user_name.add(mCursor.getString(mCursor.getColumnIndex(DBhelper.CONTACTS_COLUMN_NAME)));
                user_phone.add(mCursor.getString(mCursor.getColumnIndex(DBhelper.CONTACTS_COLUMN_PHONE)));

            } while (mCursor.moveToNext());
        }
        DisplayAdapter disadpt = new DisplayAdapter(token.this,userId, user_name, user_phone);

        obj.setAdapter(disadpt);
        disadpt.notifyDataSetChanged();

        mCursor.close();

Upvotes: 0

Views: 75

Answers (1)

nitzanj
nitzanj

Reputation: 1699

If you want the list to simply be numbered (as you said, without regard to the actual IDs in the database) you simply need to use the pos parameter you receive in getView(). And you'd probably want to use pos + 1 so the list will be 1-based (more user friendly).

Assuming mHolder.txtId is the TextView you want to use to display the numbers, as I said in my comment, this should work:

mHolder.txt_id.setText(String.valueOf(pos + 1));

If you get an error when trying this please explain exactly what error.

Upvotes: 1

Related Questions