【问题标题】:Sorting Listview in Android Studio By Time(HH:mm)在 Android Studio 中按时间排序 Listview(HH:mm)
【发布时间】:2017-07-06 19:12:53
【问题描述】:

我在 sqlite 数据库中有包含小时和分钟的“questTime”列。我想按小时和分钟对我的 Android 应用程序中的 ListView 对象进行排序。

数据库

db.execSQL("create table questions(_id integer primary key autoincrement," +
            "stuId integer," +
            "lesson text not null," +
            "subject text not null," +
            "questPhoto blob," +
            "answer text not null," +
            "questTime text," +
            "point integer not null)");

物品类别

public class ItemQuestions {

String strkonu,strpuan,strgonderen,strtime;
Bitmap imgsoru,imguserinquest;


public ItemQuestions(){

}


public ItemQuestions(String strkonu, String strpuan, String strgonderen, String strtime,
                     Bitmap imgsoru, Bitmap imguserinquest){
    this.strkonu=strkonu;
    this.strpuan=strpuan;
    this.strgonderen=strgonderen;
    this.strtime=strtime;
    this.imgsoru=imgsoru;
    this.imguserinquest=imguserinquest;
}

public String getStrtime() {
    return strtime;
}

public void setStrtime(String strtime) {
    this.strtime = strtime;
}

public String getStrkonu() {
    return strkonu;
}

public void setStrkonu(String strkonu) {
    this.strkonu = strkonu;
}

public String getStrpuan() {
    return strpuan;
}

public void setStrpuan(String strpuan) {
    this.strpuan = strpuan;
}

public String getStrgonderen() {
    return strgonderen;
}

public void setStrgonderen(String strgonderen) {
    this.strgonderen = strgonderen;
}

public Bitmap getImgsoru() {
    return imgsoru;
}

public void setImgsoru(Bitmap imgsoru) {
    this.imgsoru = imgsoru;
}

public Bitmap getImguserinquest() {
    return imguserinquest;
}

public void setImguserinquest(Bitmap imguserinquest) {
    this.imguserinquest = imguserinquest;
}

}

适配器类

public class AdapterQuestions extends ArrayAdapter<ItemQuestions> {

Context context;
ArrayList<ItemQuestions> listarrayforQuest=new ArrayList<ItemQuestions>();
private int resource;

public AdapterQuestions(Context context, int resource, ArrayList<ItemQuestions> listarrayforQuest) {
    super(context, resource, listarrayforQuest);
    this.context=context;
    this.resource=resource;
    this.listarrayforQuest=listarrayforQuest;
}

class ViewYerTutucu{
    TextView tvholder_strkonu, tvholder_strpuan, tvholder_strgonderen, tvholder_strtime;
    ImageView imgholder_seen, imgholder_imgsoru, imgholder_comment;
    CircleImageView crcimgholder_imguserinquestions;

    ViewYerTutucu(View v){
        imgholder_imgsoru= (ImageView) v.findViewById(R.id.imgviewinquestions);
        imgholder_seen= (ImageView) v.findViewById(R.id.imgviewseeninquest);
        imgholder_comment= (ImageView) v.findViewById(R.id.imgviewcommentinquest);
        tvholder_strkonu= (TextView) v.findViewById(R.id.txtkonuinquest);
        tvholder_strpuan= (TextView) v.findViewById(R.id.txtpuaninquest);
        tvholder_strgonderen= (TextView) v.findViewById(R.id.txtgondereninquest);
        tvholder_strtime= (TextView) v.findViewById(R.id.txtquestiondate);
        crcimgholder_imguserinquestions= (CircleImageView) v.findViewById(R.id.crcimguserfotoinquest);
    }
}

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

    View viewquest=convertView;
    ViewYerTutucu tutucu=null;

    if(viewquest==null){
        LayoutInflater inflater= (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        viewquest=inflater.inflate(resource,null);
        tutucu=new ViewYerTutucu(viewquest);
        viewquest.setTag(tutucu);
    }
    else {
        tutucu= (ViewYerTutucu) viewquest.getTag();
    }

    ItemQuestions itemQuestions=listarrayforQuest.get(position);

    tutucu.tvholder_strkonu.setText(itemQuestions.getStrkonu());
    tutucu.tvholder_strpuan.setText(itemQuestions.getStrpuan());
    tutucu.tvholder_strgonderen.setText(itemQuestions.getStrgonderen());
    tutucu.tvholder_strtime.setText(itemQuestions.getStrtime());

    tutucu.imgholder_imgsoru.setImageBitmap(itemQuestions.getImgsoru());
    tutucu.crcimgholder_imguserinquestions.setImageBitmap(itemQuestions.getImguserinquest());

    return viewquest;



}

}

在 ListView 中查看 enter image description here

搜了很多ListView排序的例子,买我想按照时间(HH:mm)排序。那么,如何保证当前时间最近的对象在ListView的顶部呢?

【问题讨论】:

    标签: android sqlite listview


    【解决方案1】:

    我建议您使用 RecyclerView、适配器和 SortedList 的组合,以保持元素有序。您还可以通过Callback object 获得有关该列表更改的通知。

    我很想写一篇关于这个的文章,但someone already did a good job 解释得很好。

    如果您仍想使用 ListView,我认为您必须在任何更改之后(以及在调用 notifyDatasetChanged 之前)手动对对象进行排序。我的意思是再次排序 select * order by xxx 或使用 Java 对您的集合进行排序,无论您需要什么。

    【讨论】:

      猜你喜欢
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      相关资源
      最近更新 更多