在Android中的多值列表视图中订购商品

时间:2016-05-22 19:00:14

标签: java android listview hashmap

我正在寻找一些方法来排序我的listview中的项目。这是一个多值Listview,每行有3个项目。我使用自定义ListViewAdapter来实现这一点,但它们按照ArraysList中的引入顺序排序。类似的东西:

1-2-3-4-5-6....

我希望颠倒这个顺序,在Listview的顶部引入最后一项:

6-5-4-3-2-1....

这是我的自定义ListViewAdapter:

public class ListViewAdapter extends BaseAdapter {
static class ViewHolder {
    TextView number;
    TextView elapsedTime;
    TextView totalTime;
}

public static final String FIRST_COLUMN="First";
public static final String SECOND_COLUMN="Second";
public static final String THIRD_COLUMN="Third";

public ArrayList<HashMap<String, String>> list;
Activity activity;

public ListViewAdapter(Activity activity,ArrayList<HashMap<String, String>> list){
    super();
    this.activity=activity;
    this.list=list;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return list.size();
}

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

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



@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    LayoutInflater inflater=activity.getLayoutInflater();
    final ViewHolder viewHolder;

    if(convertView == null){
        convertView = inflater.inflate(R.layout.timer_row, null);
        viewHolder = new ViewHolder();
        viewHolder.number = (TextView) convertView.findViewById(R.id.number);
        viewHolder.elapsedTime = (TextView) convertView.findViewById(R.id.elapsed_time);
        viewHolder.totalTime =(TextView) convertView.findViewById(R.id.total_time);
        convertView.setTag(viewHolder);
    }
    else{
        viewHolder = (ViewHolder) convertView.getTag();
    }

    HashMap<String, String> map=list.get(position);
    viewHolder.number.setText(map.get(FIRST_COLUMN));
    viewHolder.elapsedTime.setText(map.get(SECOND_COLUMN));
    viewHolder.totalTime.setText(map.get(THIRD_COLUMN));

    return convertView;
}
}

以下是我在活动中的称呼方式:

 //ListView Adapter
    mListviewLayout = (RelativeLayout)v.findViewById(R.id.listview_times_layout);

    mTimesListview = (ListView)v.findViewById(R.id.times_listview);
    mTimesArrayList = new ArrayList<HashMap<String,String>>();
    mListViewAdapter= new ListViewAdapter(mActivity, mTimesArrayList);
    mTimesListview.setAdapter(mListViewAdapter);

最后,以下是我在Hashmap中引入项目的方法:

 btnNextCicle.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (isTimerPaused()) {
                onTimerStop();
            } else {
                mListviewLayout.setVisibility(View.VISIBLE);
                mCiclesCounter++;
                HashMap<String, String> newEntry = new HashMap<String, String>();
                newEntry.put(ListViewAdapter.FIRST_COLUMN, "#" + mCiclesCounter);
                newEntry.put(ListViewAdapter.SECOND_COLUMN, Util.getTimeForTimer(mElapsedCicleTime));
                newEntry.put(ListViewAdapter.THIRD_COLUMN, Util.getTimeForTimer(mTimeInMilliseconds));
                mCicleStartTime = SystemClock.elapsedRealtime();
                mTimesArrayList.add(newEntry);
            }
        }
    });

1 个答案:

答案 0 :(得分:2)

您可以继承HashMap<String, Sting>并使其实现Comparable。然后,您可以使用Arrays.sort(yourComparable)按照您希望的方式对数组进行排序。