0

私のアプリケーションには TextView があります。ユーザーが初めてクリックしたときに、データを降順で並べ替える必要があります。ユーザーが同じテキストビューをもう一度クリックすると、データを昇順で並べ替える必要があります。これを達成する方法はありますか?

私のコード:

public void onClick(View v) {
    // TODO Auto-generated method stub
    boolean flag = false;
    db.open();
    Cursor c;
    if(flag==false)
    {
        c = db.getIncomeTitleDescitem(intent.getStringExtra("grpsdb"));
        startManagingCursor(c);
        flag=true;
    }                   
    else
    {
        System.out.println("inside else");
        c = db.getIncomeTitleAscitem(intent.getStringExtra("grpsdb"));
        startManagingCursor(c);
        flag=false;
    }
    ListView lv=(ListView)findViewById(R.id.listView1);     
    String[] fromdes = new String[] {db.KEY_DATE,db.KEY_DESC,db.KEY_INCOME,db.KEY_TOTAL};
    int[] todes = new int[] {R.id.text1 ,R.id.text3,R.id.text5,R.id.text7};
    SimpleCursorAdapter notes = new SimpleCursorAdapter(IncomeDetails.this, R.layout.columnview, c, fromdes, todes);                          
    lv.setAdapter(notes);  
    db.close();             
}
4

5 に答える 5

1

とを使用setTag()getTag()て状態を維持できます。

デフォルトでは、TextView をtv.setTag("descending");内部でonClick()使用getTag()し、作業を実行するように設定します。

サンプル、

tv.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View paramView) {
        String order = (String) paramView.getTag();
        if(order.equalsIgnoreCase("descending")){
            // perform descending ordering
            tv.setTag("ascending");
        }
        else if (order.equalsIgnoreCase("ascending")) {
            // perform ascending ordering
            tv.setTag("descending");
        } 
    }
});
于 2012-07-19T08:38:38.390 に答える
1

それらを昇順と降順に並べるロジックはありますか?

もし、そうなら、

arrangeA()関数を仮定し、arrangeD()それぞれ昇順と降順で配置ジョブを実行します。

String lastSet="none";
TextView tv= (TextView) findViewById(R.id.tv);
tv.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        if(lastSet.equals("none")||lastSet.equals("asc")) {
            arrangeD();
            lastSet="desc";
        }
        else {
            arrngeA();
            lastSet="asc";
        }
    }
});
于 2012-07-19T08:38:46.113 に答える
1

はい、クリックしてフラグを更新することに基づいて、フラグで簡単に追跡できます..フラグは、ブール値またはintとして保持できます。ご参考までに...

boolean flag = false;   // false - first click, true - second click
textView.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if (flag == false) {
            flag = true;
            // do descending
         } else {
             flag = false;
             // do ascending
         }                
    }
});
于 2012-07-19T08:39:05.470 に答える
1

置くだけ

boolean flag = false;

関数呼び出しの上

public void onClick(View v) {

これはあなたの仕事をします

于 2012-07-19T09:08:31.643 に答える
0

boolean sortAscend = false

あなたのTextViewのonclicklistener()チェックでsortAscend、それを並べ替えて設定しsortAscend = !sortAscendます。

このようにして、昇順/降順で交互にソートし続けます

于 2012-07-19T08:38:20.667 に答える