Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何根据当前its字段对适配器(BaseAdapter)进行排序_Android_Sorting_Adapter - Fatal编程技术网

Android 如何根据当前its字段对适配器(BaseAdapter)进行排序

Android 如何根据当前its字段对适配器(BaseAdapter)进行排序,android,sorting,adapter,Android,Sorting,Adapter,我有listviewadapter,它包含一些字段,如:状态、注释、salesname、insertdate(txtgglinsert)、图像。我想根据insertdate(txtTgglInsert)降序(基于最近的状态)进行排序。我如何通过调用这个适配器在我的程序上实现这一点 我的适配器: import java.net.URL; import java.text.DecimalFormat; import java.util.ArrayList; import android.app.A

我有listviewadapter,它包含一些字段,如:状态、注释、salesname、insertdate(txtgglinsert)、图像。我想根据insertdate(txtTgglInsert)降序(基于最近的状态)进行排序。我如何通过调用这个适配器在我的程序上实现这一点

我的适配器:

import java.net.URL;
import java.text.DecimalFormat;
import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class ListViewTimelineAdapter extends BaseAdapter{
    private static ArrayList<URLPostClass> DataProcessorResult;
    private LayoutInflater myInflater;
    Context mycontext;

    public ListViewTimelineAdapter(Context context, ArrayList<URLPostClass> results) {
        DataProcessorResult = results;
        myInflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        //Log.d("count", String.valueOf(DataProcessorResult.size()));
        return DataProcessorResult.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return DataProcessorResult.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }   

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) 
    { 
        final ViewHolder holder; 
        final Context mycontext=parent.getContext();       

        if(convertView == null) {
            convertView = myInflater.inflate(R.layout.custom_viewtimeline, null);
            holder = new ViewHolder();
            holder.txtJenisStatus = (TextView) convertView.findViewById(R.id.jenisstatus);
            holder.txtStatus = (TextView) convertView.findViewById(R.id.status);
            holder.txtSales = (TextView) convertView.findViewById(R.id.sales);
            holder.txtTgglInsert = (TextView) convertView.findViewById(R.id.tgglinsert);

            holder.imgPosting= (ImageView) convertView.findViewById(R.id.imgposting);
            convertView.setTag(holder);            
        }else{
            holder = (ViewHolder) convertView.getTag();
        }

        holder.txtJenisStatus.setText(DataProcessorResult.get(position).getJenisStatus());
        holder.txtStatus.setText(DataProcessorResult.get(position).getRemark());
        holder.txtSales.setText(DataProcessorResult.get(position).getNamaSales());
        holder.txtTgglInsert.setText(DataProcessorResult.get(position).getTgglInsert());

        holder.txtStatus.setTextSize(TypedValue.COMPLEX_UNIT_PX, mycontext.getResources().getDimensionPixelSize( R.dimen.lbltitlelistviewitem));
        holder.txtJenisStatus.setTextSize(TypedValue.COMPLEX_UNIT_PX, mycontext.getResources().getDimensionPixelSize( R.dimen.lbllistviewitem));
        holder.txtSales.setTextSize(TypedValue.COMPLEX_UNIT_PX, mycontext.getResources().getDimensionPixelSize( R.dimen.lbllistviewitem));
        holder.txtTgglInsert.setTextSize(TypedValue.COMPLEX_UNIT_PX, mycontext.getResources().getDimensionPixelSize( R.dimen.lbllistviewitem));

        try {
            String image_url = DataProcessorResult.get(position).getPath();

            if (image_url.length()>0) {
                ImageLoader imgLoader = new ImageLoader(mycontext); 
                imgLoader.DisplayImage(image_url, 0, holder.imgPosting);
                holder.imgPosting.getLayoutParams().width= mycontext.getResources().getDimensionPixelSize( R.dimen.photolistviewitem);
                holder.imgPosting.getLayoutParams().height= mycontext.getResources().getDimensionPixelSize( R.dimen.photolistviewitem);             
            }else {
                holder.imgPosting.setVisibility(View.GONE);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            //Toast.makeText(mycontext, e.toString(), Toast.LENGTH_SHORT).show();
        }

        //if (position % 2 == 1) {convertView.setBackgroundColor(Color.WHITE);} else {convertView.setBackgroundColor(Color.rgb(208,212,208)); }        
        return convertView;
    } 
    static class ViewHolder { 
        TextView txtJenisStatus;
        TextView txtStatus;
        TextView txtSales;
        TextView txtTgglInsert;
        ImageView imgPosting;
    }

}
import java.net.URL;
导入java.text.DecimalFormat;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Color;
导入android.util.Log;
导入android.util.TypedValue;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
公共类ListViewTimelineAdapter扩展了BaseAdapter{
私有静态ArrayList DataProcessorResult;
私人充气机;
语境;
公共ListViewTimelineAdapter(上下文、ArrayList结果){
DataProcessorResult=结果;
myInflater=LayoutInflater.from(上下文);
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
//Log.d(“count”,String.valueOf(DataProcessorResult.size());
返回DataProcessorResult.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回DataProcessorResult.get(位置);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}   
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图)
{ 
最终持票人;
final Context mycontext=parent.getContext();
if(convertView==null){
convertView=myInflater.inflate(R.layout.custom_viewtimeline,null);
holder=新的ViewHolder();
holder.txtJenisStatus=(TextView)convertView.findViewById(R.id.jenisstatus);
holder.txtStatus=(TextView)convertView.findViewById(R.id.status);
holder.txtSales=(TextView)convertView.findViewById(R.id.sales);
holder.txtgglinsert=(TextView)convertView.findViewById(R.id.tgglinsert);
holder.imgPosting=(ImageView)convertView.findViewById(R.id.imgPosting);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.txtJenisStatus.setText(DataProcessorResult.get(position.getJenisStatus());
holder.txtStatus.setText(DataProcessorResult.get(position.getRemark());
holder.txtSales.setText(DataProcessorResult.get(position.getNamaSales());
holder.txtgglinsert.setText(DataProcessorResult.get(position.gettglinsert());
holder.txtStatus.setTextSize(TypedValue.COMPLEX\u UNIT\u PX,mycontext.getResources().getDimensionPixelSize(R.dimen.lbltitlelistviewitem));
holder.txtJenisStatus.setTextSize(TypedValue.COMPLEX_UNIT_PX,mycontext.getResources().getDimensionPixelSize(R.dimen.lbllistviewitem));
holder.txtSales.setTextSize(TypedValue.COMPLEX_UNIT_PX,mycontext.getResources().getDimensionPixelSize(R.dimen.lbllistviewitem));
holder.txtgglinsert.setTextSize(TypedValue.COMPLEX_UNIT_PX,mycontext.getResources().getDimensionPixelSize(R.dimen.lbllistviewitem));
试一试{
字符串image_url=DataProcessorResult.get(position.getPath();
if(image_url.length()>0){
ImageLoader imgLoader=新的ImageLoader(mycontext);
显示图像(图像url,0,holder.imgPosting);
holder.imgPosting.getLayoutParams().width=mycontext.getResources().getDimensionPixelSize(R.dimen.photolistviewitem);
holder.imgPosting.getLayoutParams().height=mycontext.getResources().getDimensionPixelSize(R.dimen.photolistviewitem);
}否则{
holder.imgPosting.setVisibility(View.GONE);
}
}捕获(例外e){
//TODO自动生成的捕捉块
//Toast.makeText(mycontext,e.toString(),Toast.LENGTH_SHORT).show();
}
//if(位置%2==1){convertView.setBackgroundColor(Color.WHITE);}else{convertView.setBackgroundColor(Color.rgb(208212208));}
返回视图;
} 
静态类视图持有者{
TextView-txtJenisStatus;
TextView txtStatus;
TextView txtSales;
TextView txtgglinsert;
图像视图imgPosting;
}
}

由于
适配器
基于对象的
数组列表
,因此可以将实现更改为子类
数组适配器
(文档:)

公共类ListViewTimelineAdapter扩展了ArrayAdapter{
在此之后,排序将变得微不足道:

ArrayList<URLPostClass> myListData = ...
ArrayAdapter<URLPostClass> adapter = new MyArrayAdapter<URLPostClass>(context, R.layout.my_layout, myListData);
adapter.sort(new Comparator<URLPostClass>() {

    @Override public int compare(URLPostClass lhs, URLPostClass rhs) {
        return rhs.getTgglInsert().compareTo(lhs.getTgglInsert()); // flipped for reverse order
    }

});
myListView.setAdapter(adapter);
ArrayList myListData=。。。
ArrayAdapter=新的MyArrayAdapter(上下文,R.layout.my_布局,myListData);
adapter.sort(新的比较器(){
@重写公共int比较(URLPostClass lhs、URLPostClass rhs){
返回rhs.gettgleInsert().compareTo(lhs.gettgleInsert());//按相反顺序翻转
}
});
myListView.setAdapter(适配器);

考虑到您有一个日期字段,您的Comaparator类应该是这样的

public class CustomDateComparator implements Comparator<DataProcessorResult> {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("dd MMM yyyy");


@Override
public int compare(DataProcessorResult lhs, DataProcessorResult rhs) {
    // TODO Auto-generated method stub
    Date lhsDate = null;
    Date rhsDate = null;

    try {
        lhsDate = simpleDateFormat.parse(lhs.getTgglInsert());
        rhsDate = simpleDateFormat.parse(rhs.getTgglInsert());
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if(lhsDate == rhsDate) {
        return lhs.getNamaSales().compareToIgnoreCase(rhs.getNamaSales());
    }else {
        return lhsDate.compareTo(rhsDate);
    }
    }
}
在将其传递给自定义适配器类之前


希望这对您有所帮助。

尝试使用Collections.sort()。您可以编写一个自定义的comparator类,根据日期(insertdate)进行比较然后将排序后的列表传递给适配器。如果需要,我也可以帮助您完成代码。:@VikramV:您可以帮助我吗?添加了一个新的答案-这样编译器就可以自动对其进行排序?无需将转换日期转换为微秒,因为在PHP中,我需要转换它。您所说的“转换”是什么意思?在Java中,
Da
public class CustomDateComparator implements Comparator<DataProcessorResult> {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("dd MMM yyyy");


@Override
public int compare(DataProcessorResult lhs, DataProcessorResult rhs) {
    // TODO Auto-generated method stub
    Date lhsDate = null;
    Date rhsDate = null;

    try {
        lhsDate = simpleDateFormat.parse(lhs.getTgglInsert());
        rhsDate = simpleDateFormat.parse(rhs.getTgglInsert());
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if(lhsDate == rhsDate) {
        return lhs.getNamaSales().compareToIgnoreCase(rhs.getNamaSales());
    }else {
        return lhsDate.compareTo(rhsDate);
    }
    }
}
Collections.sort(results, new CustomDateComparator());