0

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

谁能解释这个问题?

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

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

这是我的图像适配器活动

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

}
4

5 回答 5

1

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

SELECT * FROM your_table ORDER BY your_column 
于 2012-08-14T06:32:57.050 回答
1

通过按照您感兴趣的顺序排列从数据库中获取数据,然后添加到 arrayadapter。这可能会解决您的问题

于 2012-08-14T06:25:10.870 回答
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();
    }
于 2012-08-14T06:57:47.787 回答
0

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

于 2012-08-14T06:58:08.087 回答
0

在构造函数中试试这个:

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

Arrays.sort(mobileValues);



//Arrays.sort(mobileValues2);

}

请享用。

于 2012-08-14T08:14:24.820 回答