2016-05-22 3 views
0

私のリストビューの中に私のアイテムを並べ替えるための方法を探しています。これは、各行に3つの項目を持つ複数値のListviewです。カスタムListViewAdapterを使用してこれを実現しますが、それらはArraysList内に導入された順にソートされます。何かのように:マルチバリューリストビューでのアイテムの注文Android

1-2-3-4-5-6 .... 私のリストビューの上に持って、この順序を逆にしたい: 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); 

最後に、ここで私はハッシュマップ内の項目をご紹介する方法である:

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

は、誰かが私の問題で私を助けることができることを願ってい!

ありがとうございました!

答えて

2

HashMap<String, Sting>をサブクラス化して、Comparableを実装することができます。次に、Arrays.sort(yourComparable)を使用して、希望の方法で配列を並べ替えることができます。

+1

それは働いた!ありがとう –

関連する問題