ListView按字母顺序排列?

时间:2012-08-14 06:23:05

标签: android android-listview

我的listview如何按字母顺序自动显示数据。因为在我的模拟器中,它按照数据库中的排列方式显示数据。

任何人都可以解释这个问题吗?

这就是我从数据库中检索数据的方式。

 SQLiteDatabase db = openOrCreateDatabase("database", MODE_PRIVATE, null);
          Cursor c = db.rawQuery("SELECT DISTINCT category,cimage from FoodList", null);
          int count = c.getCount();
          String[] values = new String[count];
          String[] values1 = new String[count];
          c.moveToFirst();
          for(int x = 0; x < count; x++){
             values[x] = c.getString(c.getColumnIndex("category"));
             values1[x] = c.getString(c.getColumnIndex("cimage"));
             c.moveToNext();
          } 


           list.setAdapter(new imageadapter(this,values,values1));
           db.close();
           c.close();

这是我的imageadapter活动

public class imageadapter extends BaseAdapter {
    private Context context;
    private final String[] mobileValues;
    public final String[] mobileValues2;

    public imageadapter(Context context, String[] mobileValues, String[] mobileValues1) {
        this.context = context;
        this.mobileValues = mobileValues;
        this.mobileValues2 = mobileValues1;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);


        viewHolder holder = new viewHolder();
        if (convertView == null) {

            convertView = inflater.inflate(R.layout.logo, null);
            holder.category = (TextView) convertView.findViewById(R.id.cat);
            holder.image = (ImageView) convertView.findViewById(R.id.imglogo);
             convertView.setTag(holder);

        } else {
            holder = (viewHolder) convertView.getTag();
        }

        holder.category.setText(mobileValues[position]);
        holder.s = mobileValues2[position];
        byte[] decodedString = null;
        try {
            decodedString = Base64.decode(holder.s, 0);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
          Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
          holder.image.setImageBitmap(decodedByte);

        return convertView;
    }




    public int getCount() {
        return mobileValues.length;
    }


    public Object getItem(int position) {
        return null;
    }


    public long getItemId(int position) {
        return 0;
    }

    static class viewHolder{
        ImageView image;
        TextView category;
        String s;
    }

}

5 个答案:

答案 0 :(得分:1)

通过按照您有兴趣的顺序排列数据来获取数据,然后再添加到arrayadapter。 这可以解决您的问题

答案 1 :(得分:1)

您是否使用任何查询从数据库中获取信息?如果是这样,为什么不使用这样的SQL语句:

SELECT * FROM your_table ORDER BY your_column 

答案 2 :(得分:0)

public Cursor fetchAllData() {
        return database.query(urtablename, null, null, null, null, null,
                null);
    }

它将使用光标返回所有数据,在您的活动中

 Cursor cr=dba.fetchAllData();
    cr.movetofirst();
    while(!cr.isAfterLast())
    {
    //fetch all data using column name
    //like cr.getString(cr.getColumnIndex("ur column name"));
    //it will return as per in dATABASE
    cr.movetoNext();
    }

答案 3 :(得分:0)

根据需要创建自定义比较器。现在在ArrayAdapter的sort函数中使用它。

答案 4 :(得分:0)

在构造函数中尝试:

public imageadapter(Context context, String[] mobileValues, String[] mobileValues1) {
    this.context = context;
    this.mobileValues = mobileValues;
    this.mobileValues2 = mobileValues1;

Arrays.sort(mobileValues);



//Arrays.sort(mobileValues2);

}

享受。