在我的应用程序中我有一个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();
}
答案 0 :(得分: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");
}
}
});
答案 1 :(得分: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";
}
}
});
答案 2 :(得分: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
}
}
});
答案 3 :(得分:1)
只需放置
boolean flag = false;
在函数调用
之上public void onClick(View v) {
这将完成你的任务
答案 4 :(得分:0)
boolean sortAscend = false
在TextView的onclicklistener()
检查sortAscend
并对其进行排序并设置sortAscend = !sortAscend
。
这样它会继续在asc / desc中对它进行排序